题目出错,Java默认的浮点类型是double,如果希望Java把浮点型当成float,应该在后面加f或F,
即float a = 3.5F,int 类型到float需要强制转换,即int b = (int)a;会精度丢失,打印b是3.
2.int a = 5; float b = a; 打印b的结果是什么int类型到float是自动转换,打印b是5.0
3.char a = 'A'; int b = a; 打印b的结果是什么char类型到int是自动转换,字符以编码存储,A的编码是65,打印b是65
4.int a = 68; char b = a; 打印b的结果是什么int类型到char需要强制转换,即char b = (char)a; 编码68是D,打印b是D
5.画出基本数据类型的兼容关系图从小到大自动转换,从大到小强制转换
6.变量的命名规则1.由字母、数字、下划线、美元符$组成,不能用数字开头
2.不能是Java关键字和保留字,但是可以包含
3.不能有空格
4.只能包含美元符$,不能包含@。#等其他特殊字符
驼峰命名法
骆峰命名法就是当变量名或函式名是由一个或多个单词连在一起,而构成的唯一识别字时,第一个单词以小写字母开始;第二个单词的首字母大写或每一个单词的首字母都采用大写字母
大驼峰
大驼峰把所有单词的首字母大写。常用于类名,函数名,属性,命名空间。如public class StudentInfomation;
小驼峰
除第一个单词之外,其他单词首字母大写。如int studentCount=0;
变量myStudentCount第一个单词是全部小写,后面的单词首字母大写。
补充说明,在JAVA中:类名的标识符一般用大驼峰书写格式,方法和变量的标识符则多用小驼峰书写格式。
连字符命名法
由于驼峰式写法输入不方便、引入了大小写的复杂度、可读性无优势,因此编程常用连字符命名
如:
- 用横杠连接: solution-title、solution-detail
- 下划线连接: solution_title、solution_detail
缺点:不能直接双击选中
7.分别用表格整理算术运算符, 赋值运算符,比较运算符,逻辑运算符,位运算符,单目运算符,三目运算符| 算数运算符 | 加(+) | 减(-) | 乘(*) | 除(/) | 求余(%) | 自加(++) | 自减(- -) |
| 用法 | a+b | a-b | a*b | a/b | a%b | a++,++a | a--,--a |
| 赋值运算符 | 等于(=) | ||||||
| 用法 | a=1,可以结合算数运算符,如:+=,/=,%=....... | ||||||
| 比较运算符 | 大于(>) | 大于等于 (>=) | 小于(<) | 小于等于(<=) | 等于(==) | 不等于(!=) | |
| 用法 | a>b | a>=b | a | a<=b | a==b | a!=b | |
| 输出 | true / false | ||||||
| 逻辑运算符 | 与(&&) | 不短路与(&) | 或(||) | 不短路或(|) | 非(!) | 异或(^) | |
| 用法 | 前后都为true才返回true; 前面false 后面不执行 | 前后都为true才返回true; 前面false 后面也执行 | 前后任一为true就返回true; 前面true 后面不执行 | 前后任一为true就返回true; 前面true 后面也执行 | 只需一个操作数,true返回false,反之亦然 | 两个操作数,不同返回true,相同返回false | |
| 位运算符 | 与(&) | 或(|) | 非(~) | 异或(^) | 左移(<<) | 右移(>>) | 无符号右移(>>>) |
| 用法 | 2位同时为1才返回1 | 一位为1返回1 | 每一位包括符号位取反 | 相同为0,不同为1 | 整体向左移,右边空出填0,左边移出的截断 | 整体向右移,右边移出的截断,左边空的用符号位填充 | 整体向右移,右边移出的截断,左边空的用0填充 |
| 单目运算符 | |||||||
| 含义 | 运算符只对一个操作数进行运算 | ||||||
| 用法 | 如:~5,i++,!a | ||||||
| 三目运算符 | 操作数1?操作数2:操作数3 | ||||||
| 含义 | 运算符对三个操作数进行运算 | ||||||
| 用法 | 操作数1必须是Boolean类型,或者是一个表达式,运算结果是Boolean类型即可,操作数2和3类型一致,操作数1为true,则操作数2是整个表达式结果,操作数1为false,则操作数3是整个表达式结果,注意:如果要存储三目运算符结果,应该使用与操作数2和3类型一致数据类型的变量 | ||||||
= 是赋值,==是比较运算符,判断左右是否相等,返回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
正数的原反补一样
如5:
原码:00000101
反码:00000101
补码:00000101
负数的反码是原码符号位不变其他位取反
负数的补码的反码加一
如-5:
原码:10000101
反码:11111010
补码:11111011
16.图解3&5的运算过程和结果与(&),2位同时为1才返回1
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
结果:1
17.图解3|5的运算过程和结果或(|),一位为1就返回1
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 7 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
结果:7
18.图解~5的运算过程和结果非(~):每一位包括符号位取反
| 原码 | 5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 反码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | |
| 补码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | |
| 取反后补码 | ~ | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
| 反码 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | |
| 原码 | -6 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
19.图解3^5的运算过程和结果
异或(^):相同为0,不同为1
| 3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 6 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
| 8 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | ||
| <<2 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| 32 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
红色去掉,绿色补充
21.图解8>>2的运算过程和结果| 8 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | ||
| >>2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
红色补充,绿色去掉
22.图解~5和~-5的运算过程和结果非(~):每一位包括符号位取反
| 原码 | 5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 反码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | |
| 补码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | |
| 取反后补码 | ~ | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
| 反码 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | |
| 原码 | -6 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
| 原码 | -5 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| 反码 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | |
| 补码 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | |
| 取反后补码 | ~ | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| 反码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | |
| 原码 | 4 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
>>: 整体向右移,右边移出的截断,左边空的用符号位填充
>>>:整体向右移,右边移出的截断,左边空的用0填充
快速计算8 * 4: 8<<2
快速计算 8 / 4 : 8>>2
24.说说运算符的优先级, 以及如何改变优先级加()改变优先级
25.什么是单目(一元), 双目(二元), 三目(三元)运算符
单目: 运算符只对一个操作数进行运算
~5 按位非
i++ 自增
!a 逻辑取反
双目: 运算符对两个操作数进行运算
3 + 4
5-2
6*7
8/2
10%3
a > b...........
三目: 运算符对三个操作数进行运算
操作数1?操作数2:操作数3
26.说说第二行代码中有几个运算符和运算顺序int a = 10
char b = a++ > 10 ? 'A': 'B'
四个运算符,顺序①> ②++ ③ ?: ④ =
打印a 11
打印b B



