Java的面向对象( 六 )


JDK 5.0新特性:自动装箱与自动拆箱

Java的面向对象

文章插图
 
基本数据类型、包装类—>String类型调用String重载的valueOf(Xxx Xxx)
Java的面向对象

文章插图
 
String类型—>基本数据类型、包装类:调用包装类的parseXxx(String s)
Java的面向对象

文章插图
 

Java的面向对象

文章插图
 
测试:
Java的面向对象

文章插图
 
三元式中 表达式1和表达式2类型不同时
1.一种类型为char,short,byte,另一种为int常量,而且该常量能被前三种类型表示,则返回的是前三种的类型;
2.若int类型是变量,则会将操作数类型提升,返回类型为类型提升后的类型 。
System.out.println(true ? 97 : 'a'); //aSystem.out.println(true ? 1 : 2.0); //1.0System.out.println(true ? 2.0 : 1);//2.0
Java的面向对象

文章插图
 
  • Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[],保存了从-128 ~127 范围的整数 。
  • 如果我们使用自动装箱的方式,给Integer赋值的范围在 -128~127范围内时,可以直接使用数组中的元素,不用再去new了 。目的:提高效率

Java的面向对象

文章插图
 
1.为什么要有包装类(封装类)
为了使基本数据类型的变量具有类的特征,引入包装类 。
static关键字的使用1.static:静态的
2.static可以来修饰:属性,方法,代码块,内部类
3.使用static修饰属性:静态变量
3.1属性,按是否使用static修饰,又分为:静态属性vs非静态属性(实例变量)
  • 实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性 。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改 。
  • 静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量 。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过了的 。3.2 static修饰属性的其他说明:
  • 静态变量随着类的加载而加载 。可以通过"类.静态变量"的方式进行调用
  • 静态变量的加载要早于对象的创建 。
  • 由于类只会加载一次,则静态变量在内存中也只会存在一份: 存在方法区的静态域中

Java的面向对象

文章插图
 
3.3 静态属性举例:System.out; Math.PI;
4.使用static修饰方法:静态方法
① 随着类的加载而加载,可以通过"类.静态方法"的方式进行调用

调用 方法
静态方法
非静态方法

yes
no
对象
yes
yes
③ 静态方法中,只能调用静态的方法或属性
非静态方法中,既可以调用非静态的方法或属性,也可以调用静态的方法或属性
  1. static注意点:5.1 在静态的方法内,不能使用this关键字、super关键字5.2 关于静态属性和静态方法的使用,大家都从生命周期的角度去理解 。
  2. 开发中,如何确定一个 属性 是否要声明为static的?属性是可以被多个对象所共享的,不会随着对象的不同而不同的 。类中的常量也常常声明为static开发中,如何确定一个 方法 是否要声明为static的?操作静态属性的方法,通常设置为static的工具类中的方法,习惯上声明为static的 。比如:Math、Arrays、Collections
静态的方法属性在类加载的时候被创建,静态的方法可以调用静态的属性,
非静态的方法属性在对象实例化的时候被创建,可以调用静态的方法和属性
设计模式设计模式是在大量的实践中总结和理论化之后优选的代码结构,编码风格,以及解决问题的思考方式(套路)
单例(Singleton)设计模式
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对 某个类只能存在一个对象实例  。


推荐阅读