类和对象
  JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。面向对象注重的是对象,也就是参与过程所涉及到的主体。是通过逻辑将一个个功能实现连接起来。(处理大问题)


Java中类相当于现实世界中实体的抽象化后的抽象类别,而对象则是类中实例化出来的实体

  • 就是一类对象的统称。对象就是这类具体化的一个实例。
    一个类可以产生多个对象 一个.java文件最多一个类
  • 创建类:
class 类名{
       类体(类的成员)
}
  • 类的成员可以包含:字段、方法、代码块、以及内部类及接口等。
public String name;//属性 成员变量 实例成员变量(不建议设置成员变量时初始化)
public int age;
public static int count=10; //static 静态成员变量 存放于方法区
public static final int SIZE=10;//方法区;
public final  int SIZS2=30;//实例成员变量
public void eat(){
    System.out.println("吃饭");
}//实例成员方法
{ 
 this.name = "bit"; 
 this.age = 12; 
 this.sex = "man"; 
 System.out.println("I am instance init()!"); 
 }//实例代码块
  • 成员变量:
    如果没有赋值,那么它的默认值就是自己所对应的0值。
    引用类型( 数组 类 )、String——>null
    简单类型——>0 (常见)
      char——>‘\u0000’
      boolean——> false
public String name;//未初始化name默认值为null
public static void main(String[] args) {
    Person person=new Person();
    System.out.println(person.name.length());//java.lang.NullPointerException空指针异常   
}
  • 关于static关键字: 被static修饰过的成员变量、成员方法以及代码块都为静态的。
    所有被static所修饰的不管是成员,方法:
      1调用与访问都只需要通过类名.就可以做到。
      2都不依赖于对象。
    如果count不被static所修饰,则为特征,依赖于对象,两个对象则有两个count
public int count;
public static void main(String[] args) {
    Person person1=new Person();
    person1.count++;
    System.out.println(person1.count);//1
    Person person2=new Person();
    person2.count++;
    System.out.println(person2.count);//1
}//不同对象有不同个count,count累加取决于对象
被static所修饰过得count不依赖于对象,属于类且只有一份,存放于方法区
public static int count;
public static void main(String[] args) {
   // Person person1=new Person();
    Person.count++;
    System.out.println(Person.count);//1
   // Person person2=new Person();
    Person.count++;
    System.out.println(Person.count);//2
}//只有一个count,依次累加
  • 静态最先被加载。在静态内部只能访问静态数据成员,并可以更改静态数据成员,不能访问非静态的数据成员(静态的方法不依赖于对象,对象是否产生,并不影响静态方法的调用。而非静态的数据成员依赖于对象,只有对象被实例化后,name产生)
public String name;//属性 成员变量 实例成员变量(不建议设置成员变量时初始化)
public static int count;
public void fun1(){
count=99;//可以修改静态数据成员
    System.out.println("count:"+count);
System.out.println("name"+name);//name必须要实例化出对象才能使用
  • 静态代码块不管生成多少个对象,其只会执行一次,且是最先执行的。
    静态代码块执行完毕后, 实例代码块(构造块)执行,再然后是构造函数执行。