Java基础知识复习资料 下载本文

内容发布更新时间 : 2024/5/17 19:36:30星期一 下面是文章的全部内容请认真阅读。

1.java语言是强类型还是弱类型语言?为什么?

Java 是强类语言,在使用变量时有如下规则: ? 变量必须声明,并且初始化以后才能使用。 ? 变量必须有明确的类型(type)。 ? 变量不能重复定义。 javascript是一种弱类型语言,即变量在声明时,不能明确声明其类型 变量的类型是在运行时确定的,并且可以随时改变

2.JAVA的数据类型有哪些?

⑴基本数据类型(八种): 整型: byte 1字节, short 2字节, int 4字节, long 8字节

浮点型: float 4字节, double 8字节 【float 类型共 32位(不 int相同),其中 1位为符号位, 指数 8 位, 尾数23 位。】【double 类型能表示64位,其中1 位符号位,11位指数,52位尾数】 【浮点数的字面量默认是double】

字符型: char 2字节【unicode编码值】

boolean型: boolean 1字节 【值只有true和false】 隐式类型转换:

正方向: char?

byte?short? int?long?float?double

负方向:

⑵引用类型(自定义类型):对象:比如String 数组:int[] 接口:interface

3.JAVA中成员变量和局部变量的区别?

⑴成员变量:是在类范围内定义的(也叫成员属性) 类属性:使用static修饰的就是类属性。

作用域:类属性的作用域与这个类的生存范围相同,它作为类的一个成员,

与类共存亡。只要类存在,程序就可以访问该类的类属性。

实例属性:不被static修饰的就是实例属性。

作用域: 实例属性则从这个类的实例(对象)被创建开始存在,直到系统完

全销毁这个实例,它作为实例(对象)的一个成员,与实例(对象)共存亡。只要实例存在,程序就可以访问该实例的实例属性。

⑵局部变量:在一个方法内定义的变量。(包括方法的形式参数) 1.形参:作用域是整个方法体 2.方法局部变量:一个代码块中 3.代码块局部变量:一个代码块中

注意:局部变量除了形式参数外,都必须显示初使化(必须显示指定初使值)。否则

不可以访问它们。

形式参数不须显示初使化,它在被调用时由系统完成。

4.前++和后++的区别? i++, 后++, 先将 i 的值作为整个表达的值, 然后将i 增加 1。 ? ++i, 先++, 先将 i 增加1, 然后将 i 的值作为整个表达的值。

word文档 可自由复制编辑

5. 短路运算符和非短路运算符的区别? 短路运算符[条件1 && 条件 2],如果条件1不成立,则条件2不执行;

非短路运算符[条件1 & 条件 2],两个条件都会执行。 6.怎样取得数组的长度? 数组:arr.length 集合:list.size() 字符串:str.length() 7. 实现数组拷贝(复制)的2种方法? System.arraycopy(src , srcPos, dest , destPos , length) ; src - 源数组。 srcPos - 源数组中的起始位置。 dest - 目标数组。 destPos - 目标数据中的起始位置。 length - 要复制的数组元素的数量。 Arrays.copyOf(src , length):是 JDK1.6 版本提供的方法,比起System.arraycopy()使用更简便. (注:当然,可以用新建数组用for循环的方式进行复制) 8.java中的4种访问制权限有哪些?分别作用范围是什么? (1).public:最大访问控制权限,对所有的类都可见。 (2).protect:修饰的,在类内部、同一个包、子类中能访问 (3).default:包访问权限,即同一个包中的类可以可见。默认不显式指定访问控制权限时就是default包访问控制权限。 word文档 可自由复制编辑

(4).private:最严格的访问控制权限,仅该类本身可见。

(注:访问控制修饰符可以修饰类,成员变量,方法,但是修饰类只用public和default) 9.JAVA5的新特性有哪些?

(1)循环(For-each循环)

for (type variable : array){ body} for (type variable : arrayList){body} 而1.4必须是:

for (int i = 0; i < array.length; i++){ type variable = array[i]; body}

for (int i = 0; i < arrayList.size(); i++){type variable = (type) arrayList.get(i); body} (2)泛型

以ArrayList为例,包括创建一个容器对象和取得容器内对象操作:

1.5 ArrayList arrayList =new ArrayList(); arrayList.get(i) 1.4 ArrayList arrayList =new ArrayList(); (Type) arrayList.get(i) (3) 自动装箱拆箱

在JDK5.0以前,在原始类型与相应的包装类之间的转化是不能自动完成的。要完成这种转化,需要手动调用包装类的构造函数,在JDK5.0环境中,可以自动转化:

1.5 Integer wrapper = n; int n = wrapper;

1.4 Integer wrapper = new Integer(n); int n = wrapper.intValue(); 自动装包/拆包大大方便了基本类型数据和它们包装类地使用。 自动装包:基本类型自动转为包装类.(int >> Integer); 自动拆包:包装类自动转为基本类型.(Integer >> int); (4)静态导入

静态导入功能对于JDK 5.0以前的版本是不支持的。 import static java.lang.Math; import static java.lang.System; ...

1.5 out.println(sqrt(PI));

1.4 System.out.println(Math.sqrt(Math.PI)); (5) 可变参数(Varargs)

可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。在JDK1.5之前,可以用重载来实现,但是这样就需要写很多的重载函数。

line1 public void write(Object... objs) { line2 for (Object obj: objs) line3 System.out.println(obj); line4 }

word文档 可自由复制编辑