D02 标识符

2.1关键字
这里写图片描述
2.2标识符
在程序中自定义的一些名称
这里写图片描述

2.4变量与常量
布尔型常量:true false
null常量:只有一个数值就是null
对于整数形式,有三种:
十进制数 八进制(用0开头) 十六进制(用0x开头表示)

进制转换
以十进制-二进制转换为基准,当进行其他进制转换的时候,可以先转换成二进制,再转换成相应的进制。
E.g. 十进制90转换成十六进制:
90 -> 0101-1010 ->四位四位的转换为 5 A ,那么就是十六进制的0x5A

D0206 负数二进制
6 -> 110
-6-> 6的二进制取反再加1
注:6在内存里面就是 0000-0000 0000-0000 0000-0000 0000-0110 (32个)
取反,变成 1111 -1111 1111- 1111 1111-1111 1111-1001
加1,就是 1111 -1111 1111- 1111 1111-1111 1111-1010
(负数的最高位都是1)

D0207 变量
变量:就是将不确定的数据进行存储,也就是在内存中开辟一个空间。
如何开辟一个数据空间呢?明确数据类型、变量名称、数据来完成。
E.g. 数据类型 变量名= 初始值;
byte 、short、int、long 分别对应8位、16位、32位、64位二进制数。
浮点类型:float double
精度:精确程度。float占4个8位,double占8个8位。
char(字符型变量)占2个8位
什么时候定义变量?
当数据不确定的时候,需要对数据进行存储时。
就定义一个变量完成存储。

D0208 类型转换
E.g. byte b=3;
b=b+2;
b占1个8位,2(默认是int类型)占4个8位。在进行计算之前,必须保证两个数据类型是一样的才行。所以计算机做数据类型自动提升。(原则是以大的为主,小的向大的提升。)b+2得到一个4个8位的数据类型,再赋给一个byte类型是不行的,所以编译会报错。
但是现在有一个问题,3也是int类型, 它怎么就能赋给一个byte型变量呢?因为计算机会自动判断一下3在不在byte的范围内,会有一个自动转换动作。
现在如果非要把b+2赋给b怎么办?—-写成b=(byte)(b+2) //这叫做类型强制转换

Q.类型强制转换什么时候用呢?
A.举例来说,只保留小数的整数部分/其他情况
E.g. System.out.println(‘a’+1);
这种情况中,+1就是做运算,’a’占2个8位,1占4个8位,那么’a’会提升,一提升就显示了它对应的数字是97.na如果我现在想看
‘a’+1对应的字符是什么,就要做一个强制转换如下:
System.out.println((char)(‘a’+1));
/*
有意思的是,(char)5对应的是一个梅花,(char)4对应的是一个方块
*/
2.5运算符
(1)E.g.
int x=4270;
x=x/1000*1000; //x是int型,1000也是int型,两者做运算应该还是int出来。所以是4.
(2)取模运算
//如果取模运算中出现负数,只看被模数。模数正负不管
1%-5=1
-1%5=-1
(3)自增运算符和自减运算符
int a=3,b;
b=a++; //先进行赋值操作,然后a再进行自增
System.out.println(b);
System.out.println(a);//输出打印的b是3,a是4.
(一个独特的解释,a++先出去玩,再回家吃饭;++a先吃饭,再出去玩)
(4)+ ——-字符串连接符
System.out.println(“aaaa”+”bbbbb”);
System.out.println(“5+5=”+5+5);//字符串数据和任何数据使用+相连接,最终都会变成字符串
所以要同时输出打印两个变量的时候,可以利用字符串连接符
E.g.
int a=3,b;
b=a++;
System.out.println(“a=”+a+”,b=”+b); //这样输出就非常直观

注:System.out.println(XXX)中的println的ln就表示在打印完毕后,在结尾添加换行符。
转义字符:通过”\”这个符号来转变后面字母或者符号的含义。
\n 换行
\t 制表符,相当于tab键
\r 按下回车键。windows系统中,回车符是由两个字符\r\n来表示的
\b 退格,相当于backspace
(不是所有字母都能被转义)
char ch=’\n’; //是可以的
char c=’你’;// 一个汉字两个字节。char类型也是2个字节,是可以的。

2.5.2 赋值运算符
short s=4;
//s =s+5; –这实际上包含两个操作,先运算,再赋值。编译报错
s+=5; //+=只有一次赋值运算,内部有一个数据自动提升。编译通过

2.5.3 比较运算符
比较运算符结果只能是true 或者false

2.5.4 逻辑运算符
逻辑运算符用于连接布尔型的表达式(e.g. x>3 & x<6)
^ 异或
& 与
&&与(短路):
e.g.
int a=2;
a>3 && a<6 ;//a>3吗?不大于,直接为假,右边部分不运算
|| 或(短路)

2.5.5 位运算符
位运算符是直接对二进制进行运算
6>>2=6/2^(2)=1 (6/4,两个整数做一次操作,出来的必须还是个整数)
3<<2=3*2^(2)=12
3<<3=3*2^(3)=24
综上:
(1)<<就是乘以2的移动位数次幂;>>就是除以2的移动位数次幂
(2)>>最高位补什么由原有数据的最高位值而定,如果最高位为0,右移后用0补空位;如果最高位为1,右移后用1补空位
(3)>>>表示无符号右移,无论最高位是什么,右移后都用0补

& 与运算,也可以作为位运算符。或运算同理
E.g. 6&3 = 110
011
——-
010 =2
~:反码
E.g. ~6 = -7
0000-0000 0000-0110
- - - - - - - - - - - - -
1111-1111 1111-1001
注:一个数异或同一个数两次,结果还是原来那个数

============================

练习:
1.最有效率的方式计算出2*8等于多少?
1000
*0010
~~~
0000
1000
~~~~~
10000 =16
而高效运算一般都是位运算。
0000-0000 0000-0010
乘以8相当于左移3位
2.对两个整数变量的值进行互换(不借用第三方变量)
int n=3,m=8;
(1) n=n+m; //如果n和m的值非常大,相加容易超出int范围
m=n-m;
n=n-m;
(2)n=n^m; //这种方式没有超出范围的风险
m=n^m;
n=n^m;

D0216 位运算符(练习&&三元运算符)
1.取出一个十进制数的16进制的每一位数。例如,给定60,取出60的十六进制数0x3c中的c、3.
int num=60;
//获取60的最低四位,与上15
num&15=12;
//要获取下一组4位,将60右移4位
int temp=num>>>4; //用>>>是因为想要把所有二进制数字移光
temp&15=3;
//现在碰到一个问题,怎么把12变成16进制里面的c?
//0-9 ‘A’ ‘B’ ‘C’ ‘D’ ‘E’ ‘F’
12-10+’A’=char(67)

2.5.6 三元运算符
三个元素参与运算的符号
(条件表达式)?表达式1:表达式2;
e.g.
int x=3,y;
y=(x>1)?100:200;

                2018.5.22
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资源 5来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资 5源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值