掌握基本数据类型、包装类、String三者之间的相互转换
包装类的使用:java提供了8种基本数据类型对应的包类,使得基于数据类型的变量具有类的特征
包装类---->基本数据类型:调用包装类的xxValue()
基本数据类型---->包装类
自动拆箱、装箱
基本数据类型、包装类—>String:
1.连接
2.String.valueOf()
2.1 String ---->基本数据类型、包装类
2.2 调用包装类的parseXxx();
确保可以转,否则可能会报NumberFormation
Integer内部定义了InterCache结构,IntegerCache中定义了Integer[],保存了-127 128 ;
如果我们使用自动装箱的方式,给Integer赋值时,直接使用,不需再去new,提高了效率
单元测试:
1.需要,build path往库中导包,
2.在该测试类中, import org.junit.Test;
3 测试函数上@Test;
另外需要注意,如果库中含有module-info.java,
则需要在,该类中添加 requires junit;
static
静态的
1.某些特定的数据在内存空间中只有一份
static关键字的使用:
2.可以用来修饰:属性、方法、代码块、内部类3
3.使用static修饰属性
3.1属性,按是否是static修饰,分为:静态属性 VS 非静态属性(实例变量)
实例变量,我们创建了多个类的多个对象,每个对象都独立的拥有一套类中的非静态属性,当修改其中一个对象的非静态属性时,不会导致其他对象中同样的属性值的修改
静态变量:我们创建了类的多个变量,多个对象共享同一个静态变量,当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过的。
3.2 static 修饰属性的其他说明:
3.2.1 静态变量随着类的加载而加载,可以通过“类.静态变量”的方式进行调用
3.2.2 静态变量的加载早与对象的创建
3.2.3由于类只会加载一次,则静态变量在内存中也只会存在一份,存在方法区的静态域中
3.2.4 类变量 实时变量
类 yes no
对象 yes yes
4、使用 static 修饰方法 静态方法
4、1随着类的加载而加载,可以通过“类.静态方法”的方式进行调用
4.2 静态方法 非静态方法
类 yes no
对象 yes yes
4.3静态方法中,只能调用静态的方法或属性
非静态方法中,就可以调用非静态的方法或属性,也可以调用静态的方法或属性
5.static注意点
5.1在静态的方法内,不能使用this关键字,super关键字
5.2关于静态属性和静态方法的使用,大家都从生命周期的角度去理解
6.开发中,如何确定一个属性是否要生命为static的?
>属性是可以被多个对象所共享的,不会随着对象的不同而不同的
>类中的常量也常声明为static
开发中,如何确定一个方法是否声明为static的?
>操作静态属性的方法,通常设置为static的
>工具类中的方法,习惯上声明为static的,比如,Math、Array、collections
单例设计模式:
1.所谓的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例
2.如何实现
懒汉式VS饿汉式
3.区分饿汉式和懒汉式
饿汉式:
好处:线程安全的;
相对坏处:对象加载时间过长。
懒汉式:
好处:延迟对象的创建,
坏处:目前的写法是线程不安全的。 —>到多线程内容时,再修改
饿汉式
1.私有化类的构造器
2.内部创建类的对象
4.要求此时对象也必须声明为静态的
3.提供公共的方法,返回类的对象
懒汉式
1.私有化类的构造器
2.声明当前类的对象,没有初始化
4.此对象也必须声明为为static
3.声明为public static的返回当前类对象的方法
main()方法的使用
1.main()方法作为程序的入口
2.main()方法也是一个普通的静态方法
3.main()方法可以作为我们与控制台交互的方式(之前:使用Scanner),run configurations
4. main()也是作为一个方法,在入口之前先进行静态代码块的运行
类的成员之四:
代码块(或者初始化块)
1.作用:通常用来初始化当前的类、对象
2.(可以使用static修饰)只能使用
3.分类:静态代码块、非静态代码块
4.静态代码块
内部可以有输出语句
随着类的加载而执行,而且执行性一次
作用:初始化类的信息
如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
静态代码块的执行优先于非静态代码块的执行,无论其位置如何只可以调用静态的属性和方法
5.非静态代码块
内部可以有输出语句
随着对象的创建而执行,而且每创建一个对象就执行一次非静态代码块
作用:可以在创建对象时对对象的属性进行初始化
如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行,晚于静态代码块
只可以调用非静态的属性和方法也可以调用静态的
在开发中通常合成一个就行了。
对属性可以赋值的位置
默认初始化
显示初始化
构造器中初始化
有了对象以后,可以通过“对象.属性”或“对象.方法”的方式进行赋值
在代码块中赋值
顺序:
1.默认初始化
2.显示初始化
3.代码块中初始化
4.构造器
5.对象.属性 对象.方法
final:最终的
1.final 可以用来修饰的结构:类、方法、变量
2.final用于修饰类:此类不能被其他类所继承
比如:String类、System类、StringBuffer类
3.final用于修饰方法:表明此方法不可以被重写了
比如:Object类中getClass();
4.final用于修饰变量:此时的“变量”就称为一个常量
4.1final 修饰一个属性:可以考虑赋值的位置有:显示初始化、代码块中赋值、构造器中初始化
4.2final 修饰局部变量
尤其是使用final修饰形参时表明此形参是一个常量,当我们调用此方法时,给常量形参赋一个实参,一旦赋值以后,就只能在方法体内使用形参,但不能进行重新赋值
static final:用来修饰属性:全局常量、方法