Java语法基础学习DayTwo

一、数据类型补充问题

数据类型的自动转换等级: byte,short,char -- int -- long -- float -- double

long是8个字节,float是4个字节,为什么是这么转换的?

理由:它们底层的存储结构不同;float表示的数据范围比long要大。

二、运算符

1.算术运算符 +,-,*,/,%,++,--

%:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。

+:可以是加法、正号、字符串连接符

2.赋值运算符 =,+=,-=,*=,/=,%=

注意:扩展的赋值运算符隐含了数据类型的自动强制转换。

面试题:
short s = 1;
s = s + 1;//short类型变量参与运算,自动转换为int类型,没有将int强制转换为byte,所以报错

short s = 1;
s += 1;//+=隐含了强制转换
请问上面的代码哪个有问题?

第一个s有问题,第二个没有。原因看注释。

3.比较运算符 ==,!=,>,>=,<,<=

注意:最终都返回boolean类型

4.逻辑运算符 &,|,^,!,&&,||

逻辑运算符除了 ! 外都用于连接boolean类型的式子

&:只有两边都为true结果是true。否则就是false

|:只要两边都为false结果是false,否则就是true

^:异或:两边结果一样,就为false。

        两边结果不一样,就为true.

& 和 &&区别: & :无论左边结果是什么,右边都参与运算。

         &&:短路与,如果左边为false,那么右边不参数与运算。

| 和|| 区别: |:两边都运算。

       ||:短路或,如果左边为true,那么右边不参与运算。

5.位运算符  &  |  ^  <<  >>   >>>(无符号右移) ~(反码)

位运算符即对二进制进行运算

注意:^:一个数据针对另一个数据位异或两次,该数不变

面试题:

1.对两个变量的数据进行互换。不需要第三方变量。

第一种方法:利用一个数据针对另一个数据位异或运算两次,该数不变。

a = a ^ b;

b = a  ^ b;//等价于a ^ b ^ b = a

a = a ^ b;//等价于a ^ b ^ a = b

第二种方法:变量相加

a = a + b;

b = a - b;

a = a - b;

//也可以用一句话搞定: b = (a+b) - (a=b);

2.高效算出2*8。

答案:2<<3

6.三目运算符

格式:比较表达式?表达式1:表达式2;

三、流程控制语句

1.选择结构 if、 switch 

2.循环结构 for 、while 、do...while

注意:如果需要定义变量控制循环次数。建议使用for。因为for循环完毕,变量在内存中释放。

转载于:https://www.cnblogs.com/lsf2576/p/10437636.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值