1.float a = 3.5; int b = a; 打印b的结果是什么
double a = 3.5;
int b = (int) a; //这里需要对double类型的变量a进行强制转换为int类型
System.out.println(b);
打印结果为:
2.int a = 5; float b = a; 打印b的结果是什么
public static void main(String[] args) {
int a = 5;
float b = a; //这里不需要强制转换,原因后面会说到
System.out.println(b);
}
打印结果为:
3.char a = 'A'; int b = a; 打印b的结果是什么
public static void main(String[] args) {
char a = 'A';
int b = a;
System.out.println(b);
}
打印结果为:
4.int a = 68; char b = a; 打印b的结果是什么
public static void main(String[] args) {
int a = 68;
char b= (char) a; //需要进行强制转换
System.out.println(b);
}
打印结果为:
5.画出基本数据类型的兼容关系图
6.变量的命名规则 驼峰命名法 大驼峰 小驼峰 连字符命名法
(1)变量的命名规则
a.变量可以由字母、数字、下划线和美元符号$组成,其中数字不能打头
b.变量不能是Java关键字和保留字,但可以包含关键字和保留字。
c.变量不能包含空格。
d.变量只能包含美元符号$,不能包含@、#等其他特殊字符
Java中的50个关键字
(2)驼峰命名法
a.驼峰命名法:当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。
b.小驼峰法:变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。譬如int myStudentCount;变量myStudentCount第一个单词是全部小写,后面的单词首字母大写。常用于函数名。
c.大驼峰法:相比小驼峰法,大驼峰法(即帕斯卡命名法)把第一个单词的首字母也大写了。常用于类名,属性,命名空间等。譬如public class DataBaseUser;
(3)连字符命名法
7.分别用表格整理算术运算符, 赋值运算符,比较运算符,逻辑运算符,位运算符,单目运算符,三目运算符
(1)算术运算符
运算符 | 运算 | 表达式示例 | 结果 |
+ | 加法 | int a = 5,b = 3; a + b | 8 |
- | 减法 | int a = 5,b = 3; a - b | 2 |
* | 乘法 | int a = 5,b = 3; a * b | 15 |
/ | 除法 | int a = 5,b = 3; a / b | 1 |
% | 取余 | int a = 5,b = 3; a % b | 2 |
++ | 自加 | int a = 5,b ; b = a++; b= ++a; | 5 , 6 |
-- | 自减 | int a = 5,b; b =a--; b = --a; | 5 , 4 |
(2)赋值运算符
运算符 | 运算 | 表达式示例 | 结果 |
= | 赋值 | int b = 5; | 5 |
(3)比较运算符
运算符 | 运算 | 表达式示例 | 结果 |
> | 大于 | int a = 5,b = 3; a > b | true |
>= | 大于等于 | int a = 5,b = 3; a >= b | true |
< | 小于 | int a = 5,b = 3; a < b | false |
<= | 小于等于 | int a = 5,b = 3; a <= b | false |
== | 等于 | int a = 5,b = 3; a == b | false |
!= | 不等于 | int a = 5,b = 3; a != b; | true |
(4) 逻辑运算符
运算符 | 运算 | 表达式示例 | 结果 | 说明 |
&& | 短路与 | true && true | true | 前后两个操作数必须都是true才返回true,否则返回false。当前一个操作数为false时,后一个操作数不进行运算,直接返回false。 |
& | 不短路与 | true && false | false | 前后两个操作数必须都是true才返回true,否则返回false。当前一个操作数为false时,后一个操作数也要进行运算,然后返回false。 |
|| | 短路或 | true || false | true | 前后两个操作数必须都是false才返回false,否则返回true。当前一个操作数为true时,后一个操作数不进行运算,直接返回true。 |
| | 不短路或 | false | false | false | 前后两个操作数必须都是false才返回false,否则返回true。当前一个操作数为true时,后一个操作数也要进行运算,然后返回true。 |
! | 非 | ! true | false | 只需要一个操作数,如果操作数为true,则返回false;如果操作数为false,则返回true。 |
^ | 异或 | true ^ false | false | 当两个操作数不同时才返回true,如果两个操作数相同则返回false。 |
(5)位运算符
运算符 | 运算 | 表达式示例 | 结果 | 说明 |
& | 按位与 | 3 & 5 | 1 | 当两位同时为1时才返回1 |
| | 按位或 | 3 | 5 | 7 | 只要一位为1即可返回1 |
~ | 按位非 | ~ 3 | -4 | 单目运算符,将操作数的每个位(包括符号位)全部取反 |
^ | 按位异或 | 3 ^ 5 | 6 | 当两位相同时返回0,不同时返回1 |
<< | 左移运算符 | 8 << 2 | 32 | 高位舍弃,低位以0补充 |
>> | 有符号右移运算符 | 8 >> 2 | 2 | 正数最高位补0,负数最高位补1 |
>>> | 无符号右移 运算符 | 8 >>> 2 | 2 | 无论正数负数,高位都是补0 |
(6)单目运算符
运算符只对一个操作数进行运算
(7)三目运算符
运算符 | 运算 | 表达式示例 | 结果 | 说明 |
?: | 三目运算符 | 5 > 3?yes:no | yes | 操作数1必须是boolean类型,或者是一个表达式,运算结果是boolean类型,操作数2和操作数3的类型必须是一样,操作数1为true,则操作数2是整个表达式的运算结果,操作数1为false,则操作数3是整个表达式的运算结果 |
8.=和==的区别
= 是赋值,==是比较运算符,判断左右是否相等,返回true / false
9.i++和++i的区别
i++是先赋值后自加
++i是先自加后赋值
10.+运算符操作数值, 字符, 字符串的区别是什么
+操作数值是相加
+操作字符是字符对应编码相加
+操作字符串是把字符串拼接
11.&和&&的区别
&是不短路与,前后都为true才返回true;前面false,后面也执行
&&是短路与,前后都为true才返回true;前面false,后面不执行
12.|和||的区别
|是不短路或,前后任一为true就返回true;前面true,后面也执行
||是短路或,前后任一为true就返回true;前面true,后面不执行
13.&可以作为逻辑运算符使用, 也可以作为位运算符使用, 区别是什么
逻辑运算符:不短路与(&),前后都为true才返回true;前面false,后面也执行,
前后可以是表达式
位运算符:与(&),2位同时为1才返回1,只能用于前后是整形数据
14.|可以作为逻辑运算符使用, 也可以作为位运算符使用, 区别是什么
逻辑运算符:不短路或(|),前后任一为true就返回true;前面true,后面也执行
前后可以是表达式
位运算符:或(|),一位为1就返回1,只能用于前后是整形数据
15.什么是原码、反码、补码
原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
反码:正数的反码是其本身。负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
补码:正数的补码就是其本身。负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1
正数的原反补一样
如3:
原码:00000011
反码:00000011
补码:00000011
负数的反码是原码符号位不变其他位取反
负数的补码的反码加一
如-3:
原码:10000011
反码:11111100
补码:11111101
16.图解3&5的运算过程和结果
3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
3&5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
结果 | 1 |
17.图解3|5的运算过程和结果
3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
3|5 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
结果 | 7 |
18.图解~5的运算过程和结果
5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
~5 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
结果 | -6 |
19.图解3^5的运算过程和结果
3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
3^5 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
结果 | 6 |
20.图解8<<2的运算过程和结果
8 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
8<<2 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
结果 | 32 |
21.图解8>>2的运算过程和结果
8 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
8>>2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
结果 | 2 |
22.图解~5和~-5的运算过程和结果
5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
~5 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
结果 | -6 |
-5 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
~-5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
结果 | 4 |
23.>>和>>>的区别是什么 如何最快速计算 8 * 4 如何最快速计算 8 / 4
>>: 整体向右移,右边移出的截断,左边空的用符号位填充
>>>:整体向右移,右边移出的截断,左边空的用0填充
快速计算8 * 4: 8<<2
快速计算 8 / 4 : 8>>2
24.说说运算符的优先级, 以及如何改变优先级
运算符优先级
加()号改变优先级
25.什么是单目(一元), 双目(二元), 三目(三元)运算符
单目(一元)运算符:只对一个操作数进行运算
~5按位非、i++自增、!a取反
双目(二元)运算符:运算符对两个操作数进行运算
三目(三元)运算符:运算符对三个操作数进行运算
?:
26.说说第二行代码中有几个运算符和运算顺序
int a = 10
char b = a++ > 10 ? 'A': 'B'
打印a
打印b
第二行代码中一共有四个运算符:++、>、?:、=
运算顺序:>、++、?:、=
27.流程控制与数组预习
(1)顺序结构
任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下逐行的执行,中间没有任何判断和跳转。
如果main方法的多行代码之间没有任何流程控制,则程序总是从上向下依次执行,排在前面的代码先执行,排在后面的代码后执行。这意味着:如果没有流程控制,Java方法里的语句是一个吮吸执行流,从上向下依次执行每条语句。
(2)分支结构
Java提供了两种常见的分支结构:if语句和switch语句,其中if语句使用boolean表达式或boolean值作为分支条件来进行分支控制;而switch语句则用于对多个整型值进行匹配,从而实现分支控制。
(3)循环结构
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体。当反复执行这个循环体时,需要在合适的时候把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环。
(4)控制循环结构
Java语言没有提供goto语句来控制程序的跳转,这种做法提高了程序流程控制的可读性,但降低了程序流程控制的灵活性。为了弥补这种不足,Java提供了continue和break来控制循环结构。除此之外,return可以结束整个方法,当然也就解释了一次循环。
(5)数组类型
数组是编程语言中最常见的一种数据结构,课用于存储多个数据,每个数组元素存放一个数据,通常课通过数组元素的索引来访问数组元素,包括为数组元素赋值和取出数组元素的值。Java语言的数组则具有其特有的特征,Java的数组要求所有的数组元素具有相同的数据类型。因此,在一个数组中,数组元素的类型是唯一的,即一个数组里只能存储一种数据类型的数据,而不能存储多种数据类型的数据。此外,Java语言中数组必须先初始化,然后哦才可以是同。所谓初始化,就是为数字的数组元素分配内存空间,并为每个数组元素赋初始值。
(6)深入数组
数组是一种引用数据类型,数组引用表变量只是一个引用,数组元素和数组变量在内存里是分开存放的。下面将深入介绍数组在内存中的运行机制。
1)内存中的数组
数组引用变量只是一个引用,这个引用变量可以指向任何有效的内存,只有当改引用指向有效内存后,才可通过该数组变量来访问数组元素。
2)基本类型数组的初始化
对于基本类型数组而言,数组元素的值直接存储在对应的数组元素中,因此,初始化数组时,纤维该数组分配内存空间,然后直接将数组元素的值存入对应数组元素中。