Java中有八种基本类型:

 

整型(4种):byte、short、int、long。

区别在于不同类型的整型,最值不同,若变量赋值超出其范围则会产生编译错误

 

字符型(1种):char

Char类型用于存放一个字符,值用单引号表示(双引号表示字符串)

其长度与short一样也是16位的,只能存放一个字符,否则产生编译错误

浮点型(2种):float(32位)、double(64位)

默认小数值为double类型

 

布尔型(1种):boolean

布尔型用于表示真假,其长度为1。虽然布尔型真正存放的数据是0(false) 1(true),但是,不能直接使用0 1 进行赋值

 

浮点型(2种):

浮点数类型有两种 float 长度为32位 double 长度为64位

注意: 默认的小数值是double类型的

所以 float f = 54.321会出现编译错误,因为54.321的默认类型是 double,其类型 长度为64,超过了float的长度32 在数字后面加一个字母f,直接把该数字声明成float类型 float f2 = 54.321f,这样就不会出错了

 

数据类型转换

不同类型之间的数据可以互相转换,但是要满足一定的规则

需要注意的一点是虽然short和char都是16位的,长度是一样的,但是彼此之间,依然需要进行强制转换

转换规则:从小到大自动转,从大到小强制转(从大到小转换有风险)

 

单例模式

单例模式:指的是一个类,在一个JVM里,只有一个实例存在。

饿汉式单例模式:通过私有化其构造方法,使得外部无法通过new得到新的实例。GiantDragon 提供了一个public static的getInstance方法,外部调用者通过该方法获取定义的对象,而且每一次都是获取同一个对象。 从而达到单例的目的。这种单例模式又叫做饿汉式单例模式,无论如何都会创建一个实例。

 

懒汉式单例模式:懒汉式单例模式与饿汉式单例模式不同,只有在调用getInstance的时候,才会创建实例

 

什么时候使用饿汉式,什么时候使用懒汉式?

饿汉式是立即加载的方式,无论是否会用到这个对象,都会加载。 如果在构造方法里写了性能消耗较大,占时较久的代码,比如建立与数据库的连接,那么就会在启动的时候感觉稍微有些卡顿。

懒汉式,是延迟加载的方式,只有使用的时候才会加载。 并且有线程安全的考量。使用懒汉式,在启动的时候,会感觉到比饿汉式略快,因为并没有做对象的实例化。 但是在第一次调用的时候,会进行实例化操作,感觉上就略慢。  看业务需求,如果业务上允许有比较充分的启动和初始化时间,就使用饿汉式,否则就使用懒汉式

 

什么是单例模式?

回答的时候,要答到三元素

1. 构造方法私有化

2. 静态属性指向实例

3. public static的 getInstance方法,返回第二步的静态属性

 

接口与继承

对象转型

instanceof 用于判断一个引用指向的对象是否为一个类或者他的子类

H1 instanceof Hero(判断引用H1是否为Hero的对象或者子类对象)

 

重写

子类可以继承父类的对象方法,在继承后重复提供该方法就叫做方法的重写(override)

调用重写的方法,就会执行重写的方法而不是从父类的方法。

如果没有重写机制?

如果没有重写机制,一旦继承父类所有方法都无法修改,但是又想实现一点不一样的功能就只能放弃继承父类,重新编写所有的属性和方法做一些小改动,这样增加了开发时间和维护成本。

 

多态

操作符的多态:+ 可以作为算数运算,也可以作为字符串连接 。

类的多态:父类引用指向子类对象。

多态: 都是同一个类型,调用同一个方法,却能呈现不同的状态。

 

类的多态条件:1. 父类(接口)引用指向子类对象

2. 调用的方法有重写

多态的作用:降低代码工作量,提高效率。

 

隐藏

与重写类似,方法的重写是子类覆盖父类的对象方法。隐藏,就是子类覆盖父类的类方法。

 

版权声明:本文为Zhang-SL原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Zhang-SL/p/10551716.html