1、谈谈Java 的跨平台性
答案:java的跨平台性也被称为可移植性、平台无关性、或者一次编写处处运行。意识是编写一个应用,可以在不同的平台上运行,那之所以能实现跨平台的特性,主要得益于java虚拟机(JVM),JVM解释器在运行java应用时根据当前平台进行解释,解释成符合当前平台规范的机器码。java的语言执行机制就是先编译后解释,将代码编程成字节码文件(.class),经过解释器解释运行(.class文件平台中立)。
2、java语言的主要特点
(1)、跨平台性:一个应用可以在不经过修改直接运行到不同的平台上。
(2)、面向对象
(3)、先编译,后解释:将代码先编译成字节码文件,经过解释器解释运行
(4)、自动回收:自动回收垃圾
3、java类中包含哪几个元素?并说明每种元素的作用。
答案:java类中主要包含:属性、方法、构造方法、块、内部类。
属性:定义对象数据
方法:定义对象行为
构造方法:创建对象
块:类加载时执行操作或者在每次实例化前执行通用操作
内部类:能访问外部类的属性和方法
静态内部类是指被声明为static的内部类,他可以不依赖内部类而实例,
而通常的内部类需要实例化外部类,从而实例化。静态内部类不可以有
与外部类有相同的类名。不能访问外部类的普通成员变量,但是可以访
问静态成员变量和静态方法(包括私有类型)
一个 静态内部类去掉static 就是成员内部类,他可以自由的引用外部类的属性和方法,无
论是静态还是非静态。但是不可以有静态属性和方法、.
局部内部类 就是定义在一个代码块的内类,他的作用范围是所在代码块,是内部类中
最少使用的一类型。局部内部类跟局部变量一样,不能被public ,
protected,private以及static修饰,只能访问方法中定义final类型的局部变量。
匿名内部类是一种没有类名的内部类,不使用class,extends,implements,
没有构造函数,他必须继承其他类或实现其他接口。
匿名内部类的好处是使代码更加简洁,紧凑,但是带来的问题是易读性下降。
他一般应用于GUI编程来实现时间处理等 。
在使用匿名内部类时,需要牢记以下几个原则。
1》内部类没有构造方法
2》匿名内部类不能定义静态成员,方法和类
3》匿名内部类不能是public protected private static
4》只能创建匿名内部类的一个实例
5》一个匿名内部类可以在new后面,这个匿名类必须继承一个父类或实现接口
6》因为匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效
4、构造方法的作用和特征?
答案:作用:用来创建对象
特征:a、构造方法的名字必须和类名一致且大小写敏感
b、构造方法不能声明返回值类型
c、允许重载
d、不允许手动调用
5、重载(overload)和覆盖(override)
方法的重载:在一个类中定义了多个相同名字的方法。
a、方法名相同
b、参数列表不同(个数、类型、顺序)
方法的覆盖:子类中定义了和父类中相同的方法
a、子类中方法的方法名、参数列表、返回值类型和父类一致
b、子类的方法访问修饰符合父类相同或是比父类更宽
c、子类抛出的异常不能比父类更宽或更多
6、访问修饰符
7、八种基本数据类型
数据类型 | 关键字 | 所占内存空间 | 取值范围 | 字面值 |
---|---|---|---|---|
整数 | byte | 1B | -128~127 | 整数 |
short | 2B | -32768~32767 | 整数 | |
int | 4B | -2147483648~2147483647 | 整数 | |
long | 8B | -9223372036854775808~9223372036854775807 | 整数 尾端+L | |
小数 | float | 4B | -3.403E38~3.403E38 | 小数 尾端+F |
double | 8B | -1.798E308~1.798E308 | 小数(都支持科学计数法) | |
布尔 | boolean | 1B | ture~false(真/假) | 一般用于逻辑判断 |
字符 | char | 2B | 0~65535(无符号) unicode(万国码)包括ASCII编码(美国标准信息交换码) |
unicode中每个字符都对应一个十进制整数,从而可以使用多种方式赋值 char c = 'A';(直观) char c = 65; (可以计算) char c = '\u0041';(更标准) |
自动类型提升
两个操作数的数据类型不同时结果会以较大的数据类型为准
1)两个操作数有一个为double ,运算结果为 double
2)没有double出现float,运算结果为float
3)没有float出现long,运算结果为long
4)没有long出现int,运算结果为int
5)除long类型外,其余整数类型运算结果均为int
注意:任何类型遇到String,结果均为String
基本数类型的-包装类型
基本数据类型 包装类
byte (1B) Byte
short (2B) Short
int (4B) Integer
long (8B) Long
float (4B) Float
double (8B) Double
char (2B) Character
boolean(true/false) Boolean
switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String上?
从 Java 5 以前 switch(expr)中,expr 只能是 byte、short、int、char。
从 Java 5 开始,Java 中引入了enum 枚举类型,expr 也可以是 enum 类型。
从 Java 7 开始,expr 还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。
缓冲区【面试难点】(是包装类型的数据)
JVM为了提高运行效率,对