类和对象部分知识总结

1.类和对象基础知识
在这里插入图片描述
局部变量和成员变量区别
在这里插入图片描述
在这里插入图片描述

class Person{      //创建一个Person类(型)
    //以下为成员变量,在类中,方法外面(可以理解为名词)
    public int age;    //实例成员变量
    public String name;
    public static int count;   //静态成员变量
    public final int SIZE=10;   //final是常量的意思  是对象,在堆上
    public static final int SIZE1=10; //有static修饰,在方法区

    //以下为成员方法(可以理解为动词)
    public void eat(){     //非静态方法
        int a=10;   //局部变量,栈上,方法结束后变量随之消失,要进行初始化
        System.out.println("吃饭");
    }

    public static void fun(){   //静态方法,内部不能调用实例成员方法,不能对实例数据成员初始化
       count =10;
        System.out.println("静态方法");
    }
}

public class TestDemo{
    public static void main(String[] args) {
        Person person1=new Person();//对象的实例化,Person属于引用数据类型
        person1.age=10;
        System.out.println(person1.age);
        person1.eat();
        //创建多个对象的时候,类的加载只在第一次需要的时候加载一次
        Person.fun();//静态的方法通过类名访问,不依赖对象
        System.out.println(Person.count);
        System.out.println(Person.SIZE1);//属于类本身,通过类访问
        Person person2=new Person();
        person2.name="sy";
        //每个对象的属性独立,方法共享
        System.out.println(person2.name);
        System.out.println(person2.SIZE);

    }
}

运行结果运行结果
使用 类名. 成员访问对象的字段时,“访问” 既包含读, 也包含写,如果没有显式设置初始值, 那么会被设置一个默认的初始值。
默认值规则:
对于各种数字类型, 默认值如下
byte (byte)0
char 空格’\u0000’
short (short)0
int 0
long 0L
float 0.0f
double 0.0d

对于 boolean 类型, 默认值为 false,
对于引用类型(String, Array, 以及自定制类), 默认值为 null

*2.Object类的toString方法
在这里插入图片描述

hasCode() —>将对象在堆中的地址进行哈希算法返回一个码–>哈希码
将这个哈希码传入到Integer.toHexString(哈希码)中,返回一个字符串,这个字符串是一个十六进制的数对应的字符串
对象–》堆中分配地址–》进行了哈希操作–》哈希码–》转成16进制–》String

可读性不强,要进行重写

在类内部 光标位置alt+insert
如果insert和delete重合,就fn,alt,insert 三个键一起按下

class Person{      
    public int age; 
    public String name;
    public static int count;  
    public final int SIZE=10;   
    public static final int SIZE1=12;
   
    public void eat(){    
        int a=10;  
         count =5; 
        System.out.println("吃饭");
    }

    public static void fun(){  
        System.out.println("静态方法");
    }

    @Override  //重写
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

public class TestDemo{
    public static void main(String[] args) {
        Person person=new Person();
        person.age=10;
        System.out.println(person.age);
        person.eat();
        Person.fun();
        System.out.println(Person.count);
        System.out.println(Person.SIZE1);
        System.out.println(person);  
        System.out.println(person.name);
    }
}

运行结果在这里插入图片描述
无重写函数会打印这个 @后面时是地址的哈希值在这里插入图片描述
*3.setter and getter *

class Person{
    private int age;   //类外不可以访问private修饰的属性或者方法
    private String name;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return this.age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

public class TestDemo{
    public static void main(String[] args) {
Person person=new Person();
person.setAge(4);
        System.out.println(person.getAge());
        person.setName("ad");
        System.out.println(person.getName());
    }
}

4.构造方法(构造器)
先为对象分配内存,再调用合适的构造方法,才会产生一个对象
支持重载
this 代表当前对象的引用
静态方法的内部不能用this
在这里插入图片描述

class Person{
    private int age;
    private String name;

  public Person(){   //不带有参数的构造方法
      System.out.println(1);
  }
public Person(String name){  //带有一个参数的构造方法
    this.name = name;
    System.out.println(this.name);
}
    public Person(int age, String name) {     //用alt+insert
        this.age = age;
        this.name = name;
        System.out.println(this.age);
        System.out.println(this.name);
    }
}

public class TestDemo{
    public static void main(String[] args) {
        Person person=new Person();  //调用不带有参数的构造方法
        Person person1=new Person("s");
        Person person2=new Person(5,"se");
    }
}

在这里插入图片描述

编译器会默认给一个不带参数的构造方法
在这里插入图片描述
在这里插入图片描述

5.this关键字
this.data 当前对象的成员
this.func() 当前对象的方法
this() 调用当前的构造方法,必须放在第一行,只能调一个

class Person {
    private int age;
    private String name;

    public Person() {
        this("RT");  //调用带有一个参数的构造方法
        System.out.println(1);
    }

    public Person(String name) {
        this.name = name;
        System.out.println("f");
        System.out.println(this.name);
    }

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

    public  class TestDemo {
        public static void main(String[] args) {
            Person person = new Person();
            System.out.println(person);
        }
    }

运行结果在这里插入图片描述

class Person{
    public int age;
    public String name;

    public Person(String name){
        this.name=name;
    }
    
    @Override  //重写
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

public class TestDemo{
    public static void main(String[] args) {
        Person person=new Person("st");
        System.out.println(person);
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6.static 关键字
可以修饰属性,方法,内部类,代码块
修饰属性:
在这里插入图片描述
在这里插入图片描述
修饰方法
普通成员方法依赖对象,内部不能定义静态成员变量,静态的具有优先级
静态变量就不能在方法内部进行定义,不论是普通的还是静态方法,静态的只能定义成成员变量
静态方法不能访问非静态的方法,不能访问非静态的属性

7.代码块

在这里插入图片描述
静态块:
static{
}
构造块在方法外部
{
}

8.final关键字
修饰变量:
在这里插入图片描述
在这里插入图片描述
b方法中的d被final修饰,指向不可以改变

修饰方法:
final修饰方法,那么这个方法不可以被该类的子类重写:

在这里插入图片描述

修饰类:
在这里插入图片描述

代表没有子类,该类不可以被继承:
一旦一个类被final修饰,那么里面的方法也没有必要用final修饰了(final可以省略不写)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值