1..变量:
(a)
变量的概念:
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化
(b)
作用:
变量是用于存储数据用的,只要有不确定的数据可以定义个变量来进行存储,,,并可以重复使用
(c)
使用变量时注意:
(c1)
同一个区间内不能定义同名的变量,
booleanbo = true;
booleanbo = false;报错,,,使用了相同的变量名bo
(c2)
变量的作用范围(一对{}之间有效)
(c3)
初始化值:
int类型的变量初始化值是0...布尔类型的变量初始化默认值是false;
(d)
什么时候定义变量?
当数据不确定的时候。需要对数据进行存储时就定义一个变量来完成存储动作。
(e)
定义变量的格式:
数据类型 变量名 = 初始化值;
注:格式是固定的,记住格式,以不变应万变。
2..常量:
常量表示不能改变的数值。
Java中常量的分类:
1,整数常量。所有整数
2,小数常量。所有小数
3,布尔型常量。较为特有,只有两个数值。true false。
4,字符常量。将一个数字字母或者符号用单引号( ' ' )标识。
5,字符串常量。将一个或者多个字符用双引号标识。
6,null常量。只有一个数值就是:null.
3…
|
(3.1)
自动类型提升:
l 表达式的数据类型自动提升
• 所有的byte型、short型和char的值将被提升到int型。
• 如果一个操作数是long型,计算结果就是long型;
• 如果一个操作数是float型,计算结果就是float型;
• 如果一个操作数是double型,计算结果就是double型
例子:
byteb=3;
b=b+2; 报错,,,,
3是整数赋给b不报错,而b+2就报错...原因是3往左边赋的时候3本身是整数但是他会有个自动判断3是不是在byte的范围内.他做了一个自动类型提升(byte类型的3提升为int类型的3)
(3.2)强制类型转换:
byteb=3;
b=(byte)(b+ 2);
b + 2的值强制转换成byte类型,把(b+2)的4个8位砍掉3位变为一个八位
4…算术运算符
例子:
int a = 3,
b = a++ 运算顺序是先把a的值进行赋值运算赋给b,然后a再自增,也就是a先出去运算然后再自己增加一次,,结果:a=4,,b=3
b=++a; 运算顺序是a先加然后再出去赋值…结果:a=4,,b=4
(4.1)
算术运算符的注意问题:
• 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论。
• 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
例如:int x=3510;
x=x/1000*1000; 结果3000
• 字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
System.out.println("5+5"+(5+5));// 运算过程::"5+5=55"
5…转义字符
转义字符的定义:通过\ 来转变后面字母或者符号的含义。
\n:换行。 在linux系统里面换行是由一个字符来表示的就是\n.而在window的很多软件里面换行是由2个字符来表示的\r\n,,而dos里面直接能识别\n
\b:退格。相当于backspace。
\r:按下回车键。window系统,回车符是由两个字符来表示\r\n.
\t:制表符。相当于tab键。hello world效果是hello和world之间有一对(2个)空格
5.1.System.out.println("hello \nworld");在hello 和 world的中间换行,,n是个字母,,加上\线让这个n有个其他的意义,这时\n代表换行。注意这个\线他只转变他后面的字母或者符号的含义,
5.2.char ch = '\n'; 他把n给转义了,, \n'代表一个回车符(换行)
6…..赋值运算符
l 符号:
=, +=, -=, *=, /=, %=
l 示例:
inta,b,c; a=b=c =3;
inta = 3; a+=5;等同运算a=a+5;
注意:
+=是一个符号,,+和=凑一块才是一个赋值运算符
例子:
shorts = 4;
s= s + 5; 这里出错:s + 5中的s是short占2个8位,5是4个8位的,,他们一相加,s + 5中的s就提升了,提升完以后得出一个4个8位的值,那么就不能赋给2个8位了
s+=5; 编译通过:原因: s+=5就是一次运算,他只做了一次赋值运算把左右2边的和赋给左边,
s = s + 5的s+=5的最大区别在于s+=5会做一个自动转换动作而s + 5不会......s+=5和s = 4;是一样的相当于把右边赋给左边,右边只要在short范围内他就会做自动转换,而s+=5将左右2边的和赋给左边转换动作,,,s+=5只做赋值运算他内部有个自动转换动作
7... 比较运算符
比较运算符的特点是:他运算完的结果要么是真要么是假
==和=不一样: =是赋值运算符,==是比较运算符
8…逻辑运算符
逻辑运算符的特点:逻辑就是代表一种关系
逻辑运算符的作用:用于连接boolean类型的表达式。
8.1 …
& : 只要两边的boolean表达式结果有一个为false。那么结果就是false。
只有两边都为true,结果为true。
&符号的规律是:两边的布尔表达式只要有一边为false结果就是false
8.2...| 或
true| true = true;
true| false = true;
false| true = true;
false| false = false;
|: 两边只要有一个为true,结果为true。
只有两边都有false,结果为false。
规律是:只要有一个是true,那么结果就是true
8.3...^ : 异或;异就是有点不同,
^: 异或;就是和|有点不一样。就是当true ^ true = false;这里不一样
true^ true = false;
true^ false = true;
false^ true = true;
false^ false = false;
^: 两边相同结果是false。
两边不同结果是true。
规律:只要有一个为true,那么结果就是true,,但是如果2个都是true那么结果就是false
8.4… ! 非(not):意思是判断是不是另一面,,比如!true这也是在做运算,非真,就是false,,那么!!true就是true
8.5...&&双与:特点是短路
int a = 4;
a>3 & a<6; 2个都是true,那么&和&&没有区别
int a = 2;
a>3 & a<6; false和true结果是false
a>3 && a<6; a>3是false那么右边不运算,也就是短路了,左边是false,那么结果肯定是false,右边是true都不管,,但是如果左边为true的情况下右边一定运算一定读,因为右边还可以得出结果
&和&&的特点:一般使用 &&,,,&除了连接布尔型表达式以外他还有一个作用就是位运算
&:无论左边是true是false。右边都运算。
&&:当左边为false时,右边不运算。,因为只要有一个是false那么结果就是false
&&比&运算效率高点
8.6....
|:两边都参与运算。
||:当左边为true。右边不运算。因为结果肯定是true,因为只要有一个是true,那么结果就是true
9…. 位运算符
9.1…
位运算符 | ||
运算符 | 运算 | 范例 |
<< | 左移 | 3 << 2 = 12 --> 3*2*2=12 |
>> | 右移 | 3 >> 1 = 1 --> 3/2=1 |
>>> | 无符号右移 | 3 >>> 1 = 1 --> 3/2=1 |
& | 与运算 | 6 & 3 = 2 |
| | 或运算 | 6 | 3 = 7 |
^ | 异或运算 | 6 ^ 3 = 5 |
~ | 反码 | ~6 = -7 |
规律: 一个数往左移越移越大,往右移越移越小,因为右移把有效位都移光了,,他们移的方式都是按照2的倍数在变化
<<:相当于乘与2的倍数
>>:相当于除以2的倍数
移n位,就是对乘以或者除以2的n次幂。
做运算的时候最快的运算是位运算,他的局限性是以2的倍数在增长
>>:最高位补什么由原有数据的最高位值而定,如果最高位为0,右移后用0补空位...如果最高位为1,右移后用1补空位
>>>:无论最高位是什么,右移后都用0补
注释:
|: 或运算
两边只要有一个为true,结果为true。,只有两边都有false,结果为false。只要有一个是true,那么结果就是true,
^:异或
两边相同结果是false,两边不同结果是true。只要有一个为true,那么结果就是true,,但是如果2个都是true那么结果就是false
9.2…
位运算符的细节 | |
<< | 空位补0,被移除的高位丢弃,空缺位补0。 |
>> | 被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,空缺位补1。 |
>>> | 被移位二进制最高位无论是0或者是1,空缺位都用0补。 |
& | 二进制位进行&运算,只有1&1时结果是1,否则是0; |
| | 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1; |
^ | 任何相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0 不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1 |
10…三元运算符
定义:三个元素参与运算的符号,,?号和:号他是一个三元运算符,他是一个运算符就代表着他运算一定有结果…
(条件表达式)?表达式1:表达式2;里面的?号是询问条件表达式是true还是false
如果条件表达式是true他就执行表达式1这个运算,如果是false就执行表达式2