java第二课

1、float a = 3.5; int b = a; 打印b的结果是什么

因为数据类型的转换从下到上(byte、short、int、long、float、double)是可以自动转换的,但是从下到上需要强制转换,所以编译就会出错

2、int a = 5; float b = a; 打印b的结果是什么

因为float是浮点数,打印出来是5.0

3、char a = 'A'; int b = a; 打印b的结果是什么

字符A对应的编码是65,打印出来的是65

4、int a = 68; char b = a; 打印b的结果是什么

int转换为char型时,需要强制转换,所以编译会出错

5、画出基本数据类型的兼容关系图

布尔类型与其他类型都不兼容,兼容可以理解为不同存储空间的类型之间的转换;

从下到上分别是byte、short、int、long、float、double,

从下到上是可以自动转换,也称为隐式转型;

从上到下是需要强制转换,不然会报错,称为显式转型;其中强制转换可能会导致精度丢失。

6、变量的命名规则 :

    1)、名称只能由字母、数字、下划线、$符号组成

    2)、命名时不能以数字开头

    3)、在命名是绝对不能出现Java关键字。

    4)、不允许在命名时出现中文及拼音命名。

驼峰命名法 :当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,因此被称为驼峰。驼峰命名法的命名规则可视为一种惯例,并无绝对与强制,为的是增加识别和可读性。

大驼峰 :(即帕斯卡命名法)把第一个单词的首字母也大写了。常用于类名,属性,命名空间等;

小驼峰:除第一个单词之外,其他单词首字母大写,常用于函数名和变量名;

连字符命名法:用“-、_”将单词隔开,一般最好不用连字符,因为,很多变量命名有限制要求。

7、分别用表格整理算术运算符, 赋值运算符,比较运算符,逻辑运算符,位运算符,单目运算符,三目运算符

类型

操作符

描述

算术运算符

+

加法 - 相加运算符两侧的值

-

减法 - 左操作数减去右操作数

*

乘法 - 相乘操作符两侧的值

/

除法 - 左操作数除以右操作数

取余 - 左操作数除以右操作数的余数

++

自增: 操作数的值增加1

--

自减: 操作数的值减少1

赋值运算符

=

简单的赋值运算符,将右操作数的值赋给左侧操作数

+ =

加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数

- =

减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数

* =

乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数

/ =

除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数

(%)=

取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数

<< =

左移位赋值运算符

>> =

右移位赋值运算符

&=

按位与赋值运算符

^ =

按位异或赋值操作符

| =

按位或赋值操作符

比较运算符

==

检查如果两个操作数的值是否相等,如果相等则条件为真。

!=

检查如果两个操作数的值是否相等,如果值不相等则条件为真。

检查左操作数的值是否大于右操作数的值,如果是那么条件为真。

检查左操作数的值是否小于右操作数的值,如果是那么条件为真。

>=

检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。

<=

检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。

逻辑运算符

&&

称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。(短路与)

&

不短路与

| |

称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。(短路或)

|

不短路或

称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。

位运算符

按位与。当计算的数对应的比特位同时为1的时候才返回1,其他情况为0

|

按位或。当计算的数对应的比特位只要有一个1就返回1

^

按位异或。只要两位相同的时候返回0,否则返回1

按位非。将操作数的每一位(包括符号位)全部取反

<< 

按位左移运算符。左操作数按位左移右操作数指定的位数。

>> 

按位右移运算符。左操作数按位右移右操作数指定的位数。

>>> 

按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。

单目运算符

++

自增: 操作数的值增加1

--

自减: 操作数的值减少1

~

按位非

三目运算符

?:

该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量

8、=和==的区别

=  是赋值运算符 (可以是直接量赋给变量, 也可以是变量赋给变量)

== 是是否相等的比较运算符

9、i++和++i的区别

如果表达式中只有 ++或--运算, 则在变量前面或后面没有区别

如果表达式中除了 ++或--, 还有其他运算

则在变量前面, 先运行++或--, 再运行其他运算

在变量后面, 先运行其他运算, 再运行 ++ 或 --

比如:(a++)-2表示先执行a-2,然后再a++;++a-2表示先执行++a,在执行(++a)-2

10、+运算符操作数值, 字符, 字符串的区别是什么

比如:System.out.println(3+5);//数值相加,结果为8

System.out.println('3'+'5');//字符所对应的utf-8编码相加,单引号表示字符,结果为104

System.out.println("3"+"5");//字符串的连接,双引号表示字符串,结果为35

11、&和&&的区别

短路与(&&): 左边不成立, 右边就不会运算了, 因为与要求两边都成立, 如果左边已经为不成立, 右边就没有运算的意义了, 因为无论右边是否成立, 也不会影响最终结果

不短路与(&): 左边不成立, 右边就失去了运算的意义, 但是也会运算一下

12、|和||的区别

短路或(||): 左边成立, 右边就不会运算了, 因为或要求两边都不成立, 如果左边已经成立了, 右边就失去了运算的意义了, 因为无论右边是否成立. 也不会影响最终结果

不短路或(|): 左边成立, 右边就失去了运算的意义, 但是也会运算一下

13、&可以作为逻辑运算符使用, 也可以作为位运算符使用, 区别是什么

&作为逻辑运算符时:表示为与,运行结果为Boolean型;

&作为位运算符时:表示为按位与,当计算的数对应的比特位同时为1的时候才返回1,其他情况为0。

14、|可以作为逻辑运算符使用, 也可以作为位运算符使用, 区别是什么

|作为逻辑运算符的时候:表示为或,运行结果为Boolean型

|作为位运算符时:表示为按位或,当计算的数对应的比特位只要有一个1就返回1

15、什么是原码、反码、补码

原码:把一个数转换为二进制数,第一位数为符号位组成的叫原码;

反码:除符号位以外,其他的全部取反;

补码:反码+1;

注意:正数的原反补码都是一样的!

计算机里面存的是补码

16、图解3&5的运算过程和结果

&表示当计算的数对应的比特位同时为1的时候才返回1,其他情况为0

17、图解3|5的运算过程和结果

|表示当计算的数对应的比特位只要有一个1就返回1

18、图解~5的运算过程和结果

~将操作数的每一位(包括符号位)全部取反

19、图解3^5的运算过程和结果

^表示只要两位相同的时候返回0,否则返回1

20、图解8<<2的运算过程和结果

左移<<(有无符号位都一样,低位补充0),8<<2就是快速计算8*4

8<<2:00001000,左移两位:00100000(低位补0)

结果为32.

21、图解8>>2的运算过程和结果

>>表示有符号位的右移:

8>>2:00001000,右移2位:00000010(正数高位填充0,低位舍弃)

结果为2;

-8>>2:11111000,右移2位:11111110(负数高位填1,低位舍弃)

结果为-2.

22、图解~5和~-5的运算过程和结果

 

23、>>和>>>的区别是什么

>>是有符号位的按位右移,>>>表示无符号位的按位右移;

>>的符号位不会改变,正数右移还是正数,负数还是负数;但是>>>不一样,始终是高位补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...........

三目: 运算符对三个操作数进行运算 ?:

26、说说第二行代码中有几个运算符和运算顺序

int a = 10 char b = a++ > 10 ? 'A': 'B'

打印a 打印b

第二行代码中有4个运算符:分别是=、++、>、?:

运算顺序:++、>、?:、=

a=11;b=B

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值