JAVA笔记--编程基础(第二篇)

JAVA笔记--编程基础(第二篇)

目录

JAVA笔记--编程基础(第二篇)

一、基本数据类型转换

1、自动转换

2、强制类型转换

二、关键字与转义字符

1、常用的关键字

2、转义字符

三、算术赋值关系运算符

1、算数运算符

2、赋值运算符

 3、关系运算符

四、逻辑运算符与示例

1、逻辑运算符

五、位运算符与变量交换

1、位运算符

2、位移运算符

六、三目运算符与优先级

1、三目运算符

2、优先级


一、基本数据类型转换

1、自动转换

容量小的类型自动转换成容量大的数据类型

数据类型关键字占用字节取值范围默认值
布尔型boolean不定值true、falsefalse
字节型byte1-128~1270
短整型short2-32768~327670
整形int4-2^31 ~ 2^31-10
长整型long8-2^63 ~ 2^63-10
字符型char20~65535'\u0000'
单精度浮点型float41.4E-45~3.4028235E38 0.0F
双精度浮点型double84.9E-324~2^1024-10.0D

byte,short,int 它们三者在计算的时候都会转成int类型,

char转换int也为自动转换,

如果把int值转换成float,或者long转化成double值,不需要强制转换,但可能丢失精度,

下图中实线便是自动转换,虚线也是自动转换,但可能丢失精度。

 注意:float 和 double 是属于近似值,byte char short int long 属于精确值, 精确值转近似值时可能会丢失精度。丢失精度,就会不准确,一般表示货币值不建议使用float与double。

2、强制类型转换

把大的容量类型转换为小的容量类型,但是有可能造成精度降低或数据溢出。

Boolean类型不能转换。

二、关键字与转义字符

1、常用的关键字

 保留关键字:goto  const

2、转义字符

\n换行,将当前位置移到下一行开头
\r回车,将当前位置移到本行开头
\t水平制表,跳到下一个TAB位置
\\代表一个反斜线字符 "\"
\'代表一个单引号字符
\"代表一个双引号字符

三、算术赋值关系运算符

1、算数运算符

 ++:如果在前,则是先加1,然后进行操作;如果在后,则是先操作,再加1;-- 同理。

2、赋值运算符

将一个值赋给一个变量,运算顺序从右到左

 3、关系运算符

四、逻辑运算符与示例

1、逻辑运算符

用于对Boolean型结果的表达式进行运算,运算结果总是Boolean型。

在计算机中,非0即真,0为假;

逻辑或:或1则1;

逻辑与:全1才1;

面试题:&和&&区别?

        &:在算术运算时分别计算表达式两边的结果,在作&运算,在做位运算时&表示按位与

        &&:短路与运算,先计算左边的表达式,如果结果时false,那么不用计算右边表达式,

        直接返回false,如果左边为true,在计算右边表达式,如果右边为true,结果为true,

        反之为false。

五、位运算符与变量交换

1、位运算符

对两个操作数中的每一个二进制位都进行运算;

位运算符功能:

按位取反 ~ 

~01001111
10110000

按位与 &

&01001111
1111000

0

01000000

按位或 |

|01001111
10110000
11111111

按位异或 ^

^01001111
10101100
11100011

2、位移运算符

左移:"a<<b;"将二进制形式的a逐位左移b位,最低位空出的b位补0

带符号右移:"a>>b;"将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位

无符号右移:"a>>>b;"将二进制形式的a逐位右移b位,最高位空出的b位补0

左移,数值会变大,左移变大,符号位在左边不需要考虑,右移需要考虑。

位移运算符正数示例
10000000000000000000000000001100100
100<<300000000000000000000001100100000
100>>300000000000000000000000000001100
100>>>300000000000000000000000000001100
位移运算符负数示例
-10011111111111111111111111110011100
-100<<311111111111111111111110011100000
-100>>3111111111111111111111111111110011
-100>>>300011111111111111111111111110011

面试题:以最快的速度计算8*4结果?

        00000000 00000000 00000000 00001000  8

        10000000 00000000 00000000 00100000 32

使用位移的方法是最快的。

int result = 8<<2;

左移算法:位数作为2的次幂与操作数相乘,也就是8*2^2,故左移2位。

例如:10<<2 = 40

右移算法:操作数除以位移数的2次幂,10/2,也就是10/2^1,右移1位。

10>>1=5

面试题:不通过第三个变量如何交换两个数?

        方法一、a = a + b - (b = a)

        方法二、a = a + b; b = a - b; a = a - b;

        方法三、a = a ^ b;  b = a ^ b;  a = a ^  b;最快的方法,但是两个数不可相同;

理解方法三:

a=1000001010
b=500000101
a=a^b00001111
b=a^b00001010
a=a^b00000101

六、三目运算符与优先级

1、三目运算符

X ? Y : Z

x为boolean类型表达式,若x为真,执行Y,若为假,执行Z。

2、优先级

 该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。

结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3+-4,则意义为3加-4,符号首先和运算符右侧的内容结合。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小先生

知识是无价的,白嫖也可以的。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值