章节练习题及面试题
简答题
标识符的命名规则需要注意哪几点?
- 由26个英文字母大小写,0-9 ,_或 $ 组成
- 数字不可以开头。
- 不可以使用关键字和保留字,但能包含关键字和保留字。
- Java中严格区分大小写,长度无限制。
- 标识符不能包含空格。
基本数据类型有哪几类?包含String吗?
基本数据类型
数值型
整数类型(byte1、short2、int4、long8)
浮点类型(float4、double8)
字符型(char2)
布尔型(boolean编译之后用int定义,所以应该是4个字节)
引用数据类型
类(class)
接口(interface)
数组(【】)
float表示的数据范围为什么比long的范围要大
float类型数字在计算机中用4个字节存储。遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e
底数部分:使用二进制数来表示此浮点数的实际值
指数部分:占用8bit的二进制数,可表示数值范围为0-255
但是指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。所以,float类型的指数可从-126到128。
底数部分实际是占用24bit的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit 科学计数法。
格式:
SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
S表示浮点数正负
E指数加上127后的值得二进制数据 M底数
写出基本数据类型自动转化的流程图
自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容 量大小排序为:
(char byte short) < int < long < float < double
当把任何基本数据类型的值和字符串(String)进行连接运算时(+),基本数据类 型的值将自动转化为字符串(String)类型。
整型默认的是什么类型,浮点型(实数型)默认的是什么类型?
整数int,浮点型float
对于包名,类名接口名,变量名和函数名,常量名我们习惯如何格式来命名?
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个 单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
定义一个变量需要注意什么?
Java中每个变量必须先声明,后使用
使用变量名来访问这块区域的数据
变量的作用域:其定义所在的一对{ }内
变量只有在其作用域内才有效
同一个作用域内,不能定义重名的变量
switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答案一:switch可以作用在byte上,不能作用在long上,JDK1.7之后可以作用在String上。
答案二:switch支持的类型byte,short,int,char,JDK1.5之后支持枚举,JDK1.7之后支持String类型。
强制类型转化可能出现的问题
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使 用时要加上强制转换符:(),但可能造成精度降低或溢出,格外要注意。
通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可 以实现把字符串转换成基本类型。
char型变量中能不能存贮一个中文汉字?为什么?
答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,
所以放一个中文是没问题的
定义float f=3.4;是否正确?
答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4
根据位运算符的功能,我们把位运算符分成哪几类?
运算符 运算 范例
<< 左移 3 << 2 = 12 --> 322=12
右移 3 >> 1 = 1 --> 3/2=1
无符号右移 3 >>> 1 = 1 --> 3/2=1
& 与运算 6 & 3 = 2
| 或运算 6 | 3 = 7
^ 异或运算 6 ^ 3 = 5
~ 取反运算 ~6 = -7
Java有没有goto
答:java中的保留字,现在没有在java中使用
用最有效的的方法算出2称以8等于几
答案:2<<3
char型变量中是否可以存储一个汉字?
能,因为Java一个字符是2个字节,每一个字符使用Unicode编码表示
float f=3.4;是否正确,表达式15/2*2的值是多少
答案:不正确,float f = 3.4F;
答案:14
以下代码的执行结果
public static void main(String[] args) {
int a = 8, b = 3;
System.out.println(a>>>b);
System.out.println(a>>>b | 2);
}
答案:
1
3