首页 > 编程 > Java > 正文

java基础之小知识

2019-11-07 22:46:09
字体:
来源:转载
供稿:网友

1.数据类型提升

char,byte,short—->int—>long—>float—>double;

整数类型默认为int,浮点类型默认为double,所以定义float类型时后面必须加f.

2.重载

1.在一个类里面 2.方法名一样 3.参数类型不同或者参数个数不同

注意:与有无返回值无关。

可以变参数的形参也属于重载,和数组是一致的。public void getA (String…arg){};

3.重写 1.子类方法的返回值类型 参数名 参数列表 和父类一样

2.子类方法的修饰符必须大于等于父类

3.若父类跑出异常,子类异常不能大于父类

4.子夫类必须是static 或者都是非static

4.值的传递

1.基本数据类型 是赋值

2.引用数据类型 是赋的地

5.this 1.可以修饰属性,方法,构造器。(属于哪个类那么this就代表它)

2.构造器中必须声明在第一行。

6.super 1.构造函数第一行默认是super();

2.可用于访父类中定义的属性

3.可以用于调用父类中定义的成员方法

4.当子类和父类属性重名时,可以用super来区分

5.在构造器内部super必须在第一行。 所以this和super不能在构造器中同时出现

这里写图片描述

7.多态

1.多态的前提是:有继承关系 要有子类对父类方法的重写

2.当父类引用指向子类引用,当调用方法时 实际上执行的是子类重写父类的方法,若子类没有,才调用父类的方法。

3.当父类引用指向子类引用,当调用同名的属性时,优先调用的是父类的。(本来属性是没有多态的)

4.如果是在子类本类中调用同名的属性,调用的是本类中的,因为前面有this

8.==

1.基本数据类型:根据基本数据类型的值判断是否相等。相等返回true,反之返回false 注:两端数据类型可以不同,在不同的情况下,也可以返回true。(类型提升) int i = 12; int j = 12; System.out.PRintln(i == j);// true char c = 12; System.out.println(i == c);// true float f = 12.0F; System.out.println(i == f);// true int k = 65; char a = 'A'; System.out.println(k == a);// true 2.引用数据类型:比较引用类型变量的地址值是否相等。 Person p1 = new Person(); Person p2 = new Person(); Person p3 = p1; System.out.println(p1 == p2);// false System.out.println(p1 == p3);// true

9.equals

①只能处理引用类型变量②在Object类,发现equals()仍然比较的两个引用变量的地址值是否相等 java.lang.Object类,是所有类的根父类 Person p1 = new Person(); Person p2 = new Person(); System.out.println(p1.equals(p2));//false System.out.println(p1==p2);//false //像String 包装类 File类 Date类这些重写Object类的equals()方法和toString()方法,比较是两个对象的 //"实体内容"是否完全相同。 String str1 = new String("AA"); String str2 = new String("AA"); System.out.println(str1 == str2);//false System.out.println(str1.equals(str2));//trueinteger a=new integer(5);integer b=new integer(5);a==b//false //==在引用数据类型中比较的是地址值a.equals(b)//ture 包装类重写了equals方法比较的是值

10.String类

1.==和equals 比较特别

//关于String类存字符串常量池,堆里面都是存的地址。常量池有就复用,没有就创建 String str1 = "AA"; String str2 = "AA"; String str3 = new String("AA"); System.out.println(str1 == str2);//true System.out.println(str1.equals(str2));//true System.out.println(str1 == str3);//false System.out.println(str1.equals(str3));//true System.out.println(p1.name == p2.name);//true

这里写图片描述

11.static 1.修饰属性:由该类创建的所以对象,都公用这一个属性。当其中一个对象对起修改时,其他对象也会修改。存在静态域中的。随着类的加载而加载,独有一份。

2.修饰方法:随着类的加载而加载,独有一份。

3.静态方法里面是不能有this和super的。

12.代码块 * 类的第四个成员:初始化块(或代码块) * 1.代码块如果有修饰的话,那么只能使用static。 * 2.分类: * 静态代码块: * 1.里面可以有输出语句 * 2.随着类的加载而加载,而且只被加载一次 * 3.多个静态代码块之间按照顺序结构执行 * 4.静态代码块的执行要早于非静态代码块的执行。 * 5.静态的代码块中只能执行静态的结构(类属性,类方法) * ②显式的初始化或代码块初始化(此处两个结构按照顺序执行) 也满足 * * 非静态代码块: * 1.可以对类的属性(静态的 & 非静态的)进行初始化操作,同时也可以调用本类声明的方法(静态的 & 非静态的) * 2.里面可以有输出语句 * 3.一个类中可以有多个非静态的代码块,多个代码块之间按照顺序结构执行 * 4.每创建一个类的对象,非静态代码块就加载一次。 * 5.非静态代码块的执行要早于构造器 * * 关于属性赋值的操作:①默认的初始化②显式的初始化或代码块初始化(此处两个结构按照顺序执行) ③构造器中;④通过方法对对象的相应属性进行修改


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表