码迷,mamicode.com
首页 > 编程语言 > 详细

java基础知识

时间:2016-06-15 18:41:57      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:

1. main() -方法

  Public static void main(String args[])—从main开始处理

区分大小写

方法名:第一个小写开头,其他字母大写开头

        myFirstMethod

  

2. 类与对象

  类:概念  不存在内存  鱼

  对象:实体 存在内存 鲤鱼、带鱼(变量和函数放在类里面)

 类名:大写 MyTestName

3. 变量

3.1 成员变量+局部变量

?局部变量

‚类变量/静态变量

ƒ实例变量

 

成员变量:类中定义(类的成员变量)

          Static修饰——静态变量或类变量(属于类)

          没有static——实例变量

实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配

 

1、静态变量或类变量static在类里面定义,类创建的时候就会加载静态变量,然后创建对象)

类变量也称为静态变量在类的static关键字声明的,但在方法外面,构造函数或块。

房子:类

人:对象

家具电器:static 公用 类拥有的(房子) 改动了家用电器,弄坏了就是永久的坏了别人用

          的时候也是坏的。

          Static一改动就是永久性的改动

          类创建的时候加载静态变量和静态方法(这个时候还没有对象——人),所以这个时候不能引用对象的东西

人身上的衣服和人的行为:非静态变量和方法  每个人都有但不一定一样,不是公用的,是      

                        私有的,可以随意改动自己的变量,不会对其他变量产生影响

                       方法直接的变量是不能进行互调(实例变量)

2实例变量

在类中声明,但在方法的外面,构造函数或任何块。

当一个对象与使用关键字 “new” 来创建,在对象被销毁销毁创建的实例变量。(对象被销毁,实例变量也被销毁)

访问修饰符可以给出实例变量。-defaultpublicprivateprotected

实例变量默认值:数字——0

               布尔值——false

               字符——null

实例变量为对象的属性,必须创建了实例对象,实例变量才会被分配空间,才能使用这个实例变量

import java.io.*;

 

public class WholeTest{

   // this instance variable is visible for any child class.

   public String name;

   // 全局变量name——实例变量,无static修饰

   

   // salary  variable is visible in WholeTest class only.

   private double salary;

   // 全局变量salary——实例变量,无static修饰,可用访问修饰符修饰

   // The name variable is assigned in the constructor.

   public WholeTest (String empName){

      name = empName;

  // 局部变量empName

   }

 

   // The salary variable is assigned a value.

   public void setSalary(double empSal){

      salary = empSal;

  // 局部变量empSal

   }

   

   // This method prints the WholeTest details.

   public void printEmp(){

      System.out.println("name  : " + name );

  // 这里的name显示的是全局

      System.out.println("salary :" + salary);

  // 这里的salary显示的全局

   }

 

   public static void main(String args[]){

      WholeTest empOne = new WholeTest("Ransika");

      empOne.setSalary(1000);

      empOne.printEmp();

   }

}

----实例变量与静态变量(类成员变量)

public class VarTest{

public static int a=0;

public int b=1;  

// 实例变量,只能通过创建的实例引用

public static void main(String [] args)

{

int c=0;

// 局部变量

a++;

System.out.println(a);

// 1

System.out.println(++a);

// 2

System.out.println(a);

// 2

System.out.println(c);

// 0

VarTest vt=new VarTest();

System.out.println(vt.b);

// 实例变量只能通过实例引用 vt.b

// 1  

}

 

}

局部变量:形参、方法内定义,代码块中定义的变量

1、访问修饰符不能用于局部变量。

访问修饰符:defaultpublicprivateprotected

不可访问修饰符:abstractfinal

2、局部变量在第一次使用事情应该初始化

   

所有变量必须先声明,再使用

3.2 代码块

3.2.1非静态代码块
    直接由 { } 包起来的代码,称为非静态代码块

3.2.2静态代码块
    直接由 static { } 包起来的代码,称为静态代码块

 

4. 方法  

4.1 构造方法

每个类都有构造方法,若没有显示的定义,Java编译器将会为该类提供一个默认构造方法。

创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

无参与有参

public class Puppy{

   public Puppy(){

   }

——无参构造方法

 

   public Puppy(String name){

      // 这个构造器仅有一个参数:name

   }}

创建对象

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

声明:声明一个对象,包括对象名称和对象类型。

实例化:使用关键字new来创建一个对象。

初始化:使用new创建对象时,会调用构造方法初始化对象。

public class Puppy{

   public Puppy(String name){

      //这个构造器仅有一个参数:name

      System.out.println("Passed Name is :" + name ); 

   }

   public static void main(String []args){

      // 下面的语句将创建一个Puppy对象

      Puppy myPuppy = new Puppy( "tommy" );

——调用构造函数 public Puppy(String name)初始化对象

   }}

public class Puppy{

   public Puppy(String name){

      //这个构造器仅有一个参数:name

      System.out.println("Passed Name is :" + name ); 

   }

   public static void main(String []args){

      // 下面的语句将创建一个Puppy对象

      Puppy myPuppy = new Puppy();

——调用默认的构造函数 public Puppy()初始化对象

   }}

调用类中的变量:myPuppu.vari;

调用类中的方法:myPuppu.Method(name);

4.2方法重载

一个类的两个方法拥有相同的名字,但是有不同的参数列表

方法内定义的变量被称为局部变量。

局部变量的作用范围从声明开始,直到包含它的块结束。

局部变量必须声明才可以使用。

finalize() 方法

它在对象被垃圾收集器析构(回收)之前调用,这个方法叫做finalize( ),它用来清除回收对象。

finalize()方法里,你必须指定在对象销毁时候要执行的操作

finalize()一般格式是:

protected void finalize(){

   // 在这里终结代码}

关键字protected是一个限定符,它确保finalize() 方法不会被该类以外的代码调用。

当然,Java的内存回收可以由JVM来自动完成。如果你手动使用,则可以使用上面的方法。

public class FinalizationDemo {  

    public static void main(String[] args) {  

        Cake c1 = new Cake(1);  

        Cake c2 = new Cake(2);  

        Cake c3 = new Cake(3);  

        c2 = c3 = null;  

        System.gc(); //调用Java垃圾收集器

    }  }  

  class Cake extends Object {  

    private int id;  

    public Cake(int id) {  

        this.id = id;  

        System.out.println("Cake Object " + id + "is created");  

    }     

    protected void finalize() throws java.lang.Throwable {  

        super.finalize();  

        System.out.println("Cake Object " + id + "is disposed");  

    }  }  

5. 流、文件、IO

file(内存)----输入流---->【程序】----输出流---->file(内存)

字节流和字符流

字节流能处理所有类型的数据(如图片、avi),而字符流只能处理字符类型的数据。

字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的;而字符流在操作的时候下后是会用到缓冲区的,是通过缓冲区来操作文件

结论:优先选用字节流。首先因为硬盘上的所有文件都是以字节的形式进行传输或者保存的,包括图片等内容。但是字符只是在内存中才会形成的,所以在开发中,字节流使用广泛。

?输入流:读操作 数据源包括外界(键盘、文件、网络…),即是将数据源读入到程序的通信通道

‚输出流:写操作 将程序中的数据输出到外界(显示器、打印机、文件、网络)的通信通道

 

字节流

字符流

输入流

InputStream

Reader

输出流

OutputStream

Writer

5.1 字节输入流 InputStream

read() 从输入流中读取数据的下一个字节(逐字节读取)

read(byte[]) 从输入流中读取一定的字节(如果文件小,读取文件后会有大量的空白)

 

 

 

Stream :输入输出

InputStream+OutputStream

输入流用于从源读取数据,输出流用于向目标写数据。

FileInputStream:从文件读取数据,它的对象可以用关键字new来创建。

创建一个输入流对象来读取文件:

InputStream f = new FileInputStream("C:/java/hello");

获取文件中内容并显示

注意:不识别\,汉字

      注意地址应该写成C:/Users/Administrator/Desktop/HelloWorld.java

      或者String fileName="C:\\Users\\Administrator\\Desktop\\HelloWorld.java";

import java.io.*;

public class hello{

public static void main(String [] args)throws IOException{

String fileName="C:"+File.separator+"Users"+File.separator+"Administrator"+File.separator+"Desktop"+File.separator+"HelloWorld.java";

(或者:File f=new File("C:/Users/Administrator/Desktop/HelloWorld.java");

 或者String fileName="C:\\Users\\Administrator\\Desktop\\HelloWorld.java";

File f=new File(fileName);

InputStream in=new FileInputStream(f);

 byte[] b=new byte[1024];

       in.read(b);——从输入流中读取一定数量的字节

       in.close();

       System.out.println(new String(b));

}

}

判断是否读到末尾,读到末尾为-1跳出

import java.io.*;

class hello{

   public static void main(String[] args) throws IOException {

       String fileName="D:"+File.separator+"hello.txt";

       File f=new File(fileName);

       InputStream in=new FileInputStream(f);

       byte[] b=new byte[1024];

       int count =0;

       int temp=0;

       while((temp=in.read())!=(-1)){

           b[count++]=(byte)temp;

       }

       in.close();

       System.out.println(new String(b));

    }

}

temp=in.read()  逐字读

temp=in.read()!=-1  没有读到末尾,继续读取

 

注意:当读到文件末尾的时候会返回-1.正常情况下是不会返回-1的。

5.2 字节输出流OutputStream

向文件中写入字符串

 

import java.io.*;

 public class hello{

   public static void main(String[] args) throws IOException {

       String fileName="D:"+File.separator+"hello.txt";

       File f=new File(fileName);

       OutputStream out =new FileOutputStream(f);——输出流

       String str="Hello World";

       byte[] b=str.getBytes();——将String变成byte数组

       out.write(b);  ——往文件中写入b中字节内容

       out.close();——关闭

    }

}

逐字节来写入文件中

/**

 * 字节流

 * 向文件中一个字节一个字节的写入字符串

 * */

import java.io.*;

class hello{

   public static void main(String[] args) throws IOException {

       String fileName="D:"+File.separator+"hello.txt";

       File f=new File(fileName);

       OutputStream out =new FileOutputStream(f);

       String str="Hello World!!";

       byte[] b=str.getBytes();

       for (int i = 0; i < b.length; i++) {

           out.write(b[i]);

       }

       out.close();

    }

}

向文件中添加新的内容

import java.io.*;

class hello{

   public static void main(String[] args) throws IOException {

       String fileName="D:"+File.separator+"hello.txt";

       File f=new File(fileName);

       OutputStream out =new FileOutputStream(f,true);

       //true表示追加模式,否则为覆盖 OutputStream out=FileOutputStream(f,true)

       String str="Rollen";

       //String str="\r\nRollen"; 可以换行

       byte[] b=str.getBytes();

       for (int i = 0; i < b.length; i++) {

           out.write(b[i]);

       }

       out.close();

    }

}

5.3 字符输入流 reader——FileReader读出

Char

import java.io.*;

class hello{

   public static void main(String[] args) throws IOException {

       String fileName="D:"+File.separator+"hello.txt";

       File f=new File(fileName);

       char[] ch=new char[100];

       Reader read=new FileReader(f);

       int count=read.read(ch);  ——按字符长度读取

       read.close();

       System.out.println("读入的长度为:"+count);

       System.out.println("内容为"+new String(ch,0,count));

    }

}

5.4 字符输出流 write——写入

5.5 字节转换字符

 

 

6. 修饰符

可访问的修饰符:publicdefault、protectedprivate

Default:同一包

Public:所有类可见

Private:同一类可见

Protected:同一包中的类和子类

不可访问的修饰符:finalabstractstrictfp

为了实现一些其他的功能,Java也提供了许多非访问修饰符。

static修饰符,用来创建类方法和类变量。

Final修饰符,用来修饰类、方法和变量,final修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

Abstract修饰符,用来创建抽象类和抽象方法。

Synchronizedvolatile修饰符,主要用于线程的编程。

 

7. Import

   导入类:通过包名导入类 java.awt.Frame

   Import java.awt.Frame

   类名:可能出现重复(就像街道,所以要点名哪里街道:市省)

   引入类后通过创建对象才能用呢(对象才是存在的)

   Import java.awt.Frame

   public class MyTest(){

   Public static void main(String args[])

   {

   (变量)Frame w=new Frame();   -----new通过Frame这个类创建对象

  --w就是能装对象的变量,存放对象的地址,指向这个对象

           W.show();

           w.setSize(300,400);

 

}

}

栈与堆

栈:薯片桶  先放后吃

堆:无顺序

new: new

8. 编译

 源文件—编译成为字节码(中间件文件,而不是0,1.class 文件

 Jvm—运行字节码文件为

 Javac.exe  .class 文件

 Java.exe

 一个文件只有一个类 是public

9. 绘画

  Java不允许将画直接画在窗体中,而是将画放在画布上 再放在窗体上

  画与框架:画画在纸上,用框将其裱起来

  提供画布类  

  为画布类创建对象 将画画在对象上  再将画布放在窗体

  

10. 类与类继承

  类与类的关系:继承

  没有内容的画布 继承有内容的画布

  Class MyPanel extends Panel

对象:类的实例

类:方法和变量

实例变量:对象都有一个独特的实例变量,对象的状态由实例变量决定

11. 变量

  必须先显示声明再使用

8种基本数据操作类型:int 、、、

String 不是基本数据类型

12. 循环

 Forwhile

 For:知道循环多少次

While:不知道循环多少次

Whiletrue)死循环 一直循环下去

13. 线程

  一个程序有多个不同的片段——进程

  五个孩子玩一个车  车—CPU

                   五个孩子—线程

  一个车能哄五个孩子

  五个孩子轮着玩车—轮转

  车轮着给五个孩子玩,每个时候只有一个孩子玩—CPU轮着给每个线程用,每个时刻只有一个线程

 

不同的程序:进程

进程:一个独立的程序;一个正在运行的记事本和浏览器属于不同的两个进程

线程:进程运行后,系统会给程序在内存分配独立的空间

      在一个进程中能够共同运行的两段代码

14. Run

  run 每个类都可以拥有

 Cpu在一些情况下会遇到run

 Run也是一个孩子  也希望有车玩

 class MyPanel extends Panel implements Runnable{

Public void paint(Graphic g){

}         —因为MyPanel继承Panel 所以MyPanelpaint()

Public void run(){

}MyPanel没有这个run,哪里来的呢?——就是runnable  系统通过runnable知道有run

}

Import java.awt.*

Public class MyTest{
public static void main(String [] args){

Frame w=new Frame();

w.setSize(300,400);

MyPanel mp=new MyPanel();

w.add(mp);

Thread t=new Thread(mp);

t.start();

w.show();

}

}

java基础知识

标签:

原文地址:http://www.cnblogs.com/Mandy-ywl/p/5588310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!