针对于前段时间Java的学习这里总结了几个小问题
一、Java中的数据类型
1、基本数据类型
(1)、整型
byte:
- byte 数据类型是8位、含符号,二进制补码表示的整数;
- 最小值是 -128(-2^7);
- 最大值是 127(2^7-1);
short:
- short 数据类型是 16 位、有符号的以二进制补码表示的整数
- 最小值是 -32768(-2^15);
- 最大值是 32767(2^15 - 1);
- Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
int:
- int 数据类型是32位、有符号的以二进制补码表示的整数;
- 最小值是 -2,147,483,648(-2^31);
- 最大值是 2,147,483,647(2^31 - 1);
- 一般地整型变量默认为 int 类型;
long:
- long 数据类型是 64 位、有符号的以二进制补码表示的整数;
- 最小值是 -9,223,372,036,854,775,808(-2^63);
- 最大值是 9,223,372,036,854,775,807(2^63 -1);
(2)、浮点型
float:
- float 数据类型是单精度,32位;
- float 在储存大型浮点数组的时候可节省内存空间;
- 浮点数不能用来表示精确的值;
double:
- double 数据类型是双精度、64 位;
- 浮点数的默认类型为 double 类型;
- double类型同样不能表示精确的值;
(3)、字符型
char:
- char 类型是一个单一的 16 位 Unicode 字符;
- char 数据类型可以储存任何字符;
(4)、布尔型
boolean:
- boolean数据类型表示一位的信息;
- 只有两个取值:true 和 false;
- 这种类型只作为一种标志来记录 true/false 情况;
- 默认值是 false;
2、引用类型
(1)、类
(2)、接口
(3)、数据
二、Java多态的实现
1、多态产生的必要条件
(1)、有继承关系 (2)、方法重写 (3)、父类引用指向子类对象。
2、多态的实现
(1)、方法重载
同一个类中的多个方法可以有相同的方法名称,但是有不同的参数列表。
- 方法名称必须相同。
- 参数列表必须不同。
- 方法的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以称为方法的重载。
(2)、接口实现
通过在类名后跟随implements关键字并添加接口名字,达到接口实现的目的。
(3)、继承
在类名后通过extend关键字实现类的继承。
三、Java 中的 try-catch 机制是什么?有什么用处?
1、Java中try-catch机制如下
(1)、在程序中对可能会出现报错的语句进行try-catch环绕,用于捕获该语句执行时发生的错误。其中catch可以有多个,目的时用于匹配多个不同的异常。
(2)、当发生无法处理的异常,在方法声明出抛出(throws)异常,并由上层的调用方法进行处理。
2、异常捕获的用处
在程序执行过程中异常可能随时发生,且发生的位置不同,可能在代码的中间,也有可能在末尾。但这些异常都有一个特点即,当异常出现时,程序就会在异常出现的位置终止。而我们有时候可能需要在程序出现异常时依然能够执行下去,并得到结果。因此异常捕获就可一解决这个问题。当我们将可能会发生异常的代码段通过try-catch进行环绕,即可保证运行的程序在抛出异常的情况下依然能够执行下去。
四、Java 中的泛型是什么?它的用处是什么?
1、Java泛型
泛型即在Java中的所有数据类型,本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,使代码可以应用于多种数据类型在类名后使用<E>或<T>声明即可。
2、泛型的用处
(1)、确保类型的安全性
泛型的定义告诉编译器每个集合接收的对象类型是什么,编译器在编译期就会做类型检查,告知是否插入了错误类型的对象。
(2)、消除强制转换
消除源代码中的许多强制类型转换,这使得代码更加可读,并且减少了出错机会。
(3)、避免非必要的装箱、拆箱,提高程序性能
泛型变量固定了类型,使用的时候就已经知道是值类型还是引用类型,避免了不必要的装箱、拆箱操作。
五、装箱与拆箱
1、概述
Java为每种基本数据类型都提供了对应的包装器类型,让基本类型具备对象的特征,实现更多的功能。
2、装箱
Java根据输入的数值自动创建对应的对象。
3、拆箱
拆箱就是自动将包装器类型转换为基本数据类型
4、包装类型
byte(1字节) | Byte |
short(2字节) | Short |
int(4字节) | Integer |
long(8字节) | Long |
float(4字节) | Float |
double(8字节) | Double |
char(2字节) | Char |
boolean | Boolean |
六、Java多线程概述
1、线程的创建
(1)、继承Thread类并重写run方法
(2)、继承Runnable接口并重写run方法
2、线程启动
(1)、继承Thread类
//需要线程启动的方法
public void test1(){
new 线程名().start();
}
public void test2(){
线程类 对象名 = new 线程类(参数);
对象名.start();
}
(2)、实现Runnable接口
public void test3(){
//初始化对象
线程类 对象名 = new 线程类();
Thread t = new Thread(对象名);
t.start();
}
3、总结
Java为每种基本数据类型都提供了对应的包装器类型,让基本类型具备对象的特征,实现更多的功能。
七、什么是面向对象? 面向对象的三大特征是什么?
1、对象
在Java中对象就是具有某些的特殊属性(成员变量)和行为方式(方法)的实体。
2、面向对象
面向对象是已对象为基础,完成各种操作主要强调对象、结果。是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
3、面向对象的特征
面向对象中,对象与消息传递分别表现事物及事物之间的相互关系。
通过封装将对象的定义和实现分开。
通过继承体现对象间的相互关系。
以上特征使得实体能够有多态性,同时也构成了面向对象的基本特征。
八、什么是抽象类?它与接口有什么区别?
1、抽象方法
常见的方法体中有具体的执行过程,而抽象方法中则没有具体的执行方法、
2、抽象类
含有抽象方法的类即为抽象类
3、总结
普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、静态方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。
4、实现过程
//定义抽象类
public abstract class Demo{
public void A(){
System.out.println("这是一个普通方法");
}
//抽象方法
public abstract void B();
}
九、什么是静态代码块?它的用处是什么?
1、静态代码块
执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。
2、静态代码块的作用
静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。静态代码块随着类加载而加载,有多个静态代码块的,按代码块前后顺序加载。由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
十、super与this的作用
1、this
this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
2、super
super 可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。
(持续更新)