王道程序员_Java面向对象基础_Java16期学习总结6.22

王道Java16期(2019)学习总结6.19

1.Java的安全性主要体现在哪里?

语言层次的安全性主要体现在?
Java取消了强大但又危险的指针,而代之以引用。由于指针可进行移动运算,指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的,因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的,并且使用指针也容易数组越界。

垃圾回收机制:
不需要程序员直接控制内存回收,由垃圾回收器在后台自动回收不再使用的内存。避免程序忘记及时回收,导致内存泄露。避免程序错误回收程序核心类库的内存,导致系统崩溃。

异常处理机制:
Java异常机制主要依赖于try、catch、finally、throw、throws五个关键字。

强制类型转换:
只有在满足强制转换规则的情况下才能强转成功。

底层的安全性可以从以下方面来说明:
Java在字节码的传输过程中使用了公开密钥加密机制(PKC)。

在运行环境提供了四级安全性保障机制:
字节码校验器 -类装载器 -运行时内存布局 -文件访问限制

2.用最有效率的方法算出2乘以8等于多少?
使用位运算来实现效率最高。位运算符是对操作数以二进制比特位为单位进行操作和运算,操作数和结果都是整型数。 对于位运算符“<<”, 是将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,位运算cpu直接支持的,效率最高。所以,2乘以8等于几的最效率的方法是2 << 3

3.基本数据类型的转换规则?
王道程序员_Java面向对象基础_Java16期学习总结6.22_第1张图片

4.break,continue,return,exit的区别?
break: 结束当前循环并退出当前循环体,break还可以退出switch语句。
continue: 循环体中后续的语句不执行,但是循环没有结束,继续进行循环条件的判断(for循环还会i++)。continue只是结束本次循环。
return:直接退出当前的方法快。
exit:退出的范围非常大,代码中如果有exit,就会直接退出,后续所有的代码全部不执行。它结束的直接输虚拟机。

5.可变参数
可变参数是java的新特性。主要使用的地方是在传递参数的时候,如果不确定参数的个数,可以用可变参数。

public static void add (int ... data){
	int sum = 0;
	for(int x= 0 ; x < data.length ; x++ ){
		sum += data[x];
		}
		return;
}

可变参数的形式 …

可变参数只能是方法的形参

可变参数对应的实参可以0,1,2…个,也可以是一个数组

.在可变参数的方法中,将可变参数当做数组来处理

可变参数最多有一个,只能是最后一个

可变参数好处:方便 简单 减少重载方法的数量

如果定义了可变参数的方法,不允许同时定义相同类型数组参数的方法

6.static 关键字作用
static可以修饰变量、方法、代码块和内部类

static属性属于这个类所有,即由该类创建的所有对象共享同一个static属性。可以对象创建后通过对象名.属性名和类名.属性名两种方式来访问。也可以在没有创建任何对象之前通过类名.属性名的方式来访问。

static变量和非static变量的区别(都是成员变量,不是局部变量)

(1)在内存中份数不同

不管有多少个对象,static变量只有1份。对于每个对象,实例变量都会有单独的一份

static变量是属于整个类的,也称为类变量。而非静态变量是属于对象的,也称为实例变量

(2)在内存中存放的位置不同

静态变量存在方法区中, 实例变量存在堆内存中 *

(3)访问的方式不同

实例变量: 对象名.变量名 stu1.name=“小明明”;

静态变量:对象名.变量名 stu1.schoolName=“西二旗小学”; 不推荐如此使用

类名.变量名 Student.schoolName=“东三旗小学”; 推荐使用

(4)在内存中分配空间的时间不同

实例变量:创建对象的时候才分配了空间。静态变量:第一次使用类的时候

Student.schoolName=“东三旗小学”;或者Student stu1 = new Student(“小明”,“男”,20,98);

static方法也可以通过对象名.方法名和类名.方法名两种方式来访问

static代码块。当类被第一次使用时(可能是调用static属性和方法,或者创建其对象)执行静态代码块,且只被执行一次,主要作用是实现static属性的初始化。

static内部类:属于整个外部类,而不是属于外部类的每个对象。不能访问外部类的非静态成员(变量或者方法),.可以访问外部类的静态成员

7.final和abstract关键字的作用
final和abstract是功能相反的两个关键字,可以对比记忆

abstract可以用来修饰类和方法,不能用来修饰属性和构造方法;使用abstract修饰**的类是抽象类,需要被继承,使用abstract修饰的方法是抽象方法,需要子类被重写。

final可以用来修饰类、方法和属性,不能修饰构造方法。使用final修饰的类不能被继承,使用final修饰的方法不能被重写,使用final修饰的变量的值不能被修改,所以就成了常量。

特别注意:final修饰基本类型变量,其值不能改变,由原来的变量变为常量;但是final修饰引用类型变量,栈内存中的引用不能改变,但是所指向的堆内存中的对象的属性值仍旧可以改变。例如:

你可能感兴趣的:(Java,SE,Java,王道)