变量
存储空间,空间中的数据是可以改变的。
语法:
1.数据类型变量名; //=是赋值运算符
变量名 = 值;
2.数据类型变量 = 值;
例如:
变量声明:int age;
变量初始化:age = 22;
边声明边初始化:int age =22;
注意:
1.同一作用域内变量不能同名;
2.变量要先声明 再使用;
3.局部变量必须 赋值后 再使用;
------------------------------------------------
Int 整数类型
强类型:
1. 先声明类型
2. 赋值的类型与声明的类型要相符合
标识符命名规则:
1. 由 字母、数字、下划线、$组成
2. 不能以数字开头
3. 不能是java关键字
4. 不能是字面值 true、false、null
变量名命名规范:
数据类型
基本数据类型:存的是值
整数类型: 例如:1,45,78
大小 范围
字节型: byte 1字节 - 128 到 127
短整型: short 2 字节 -2^15 到 2^15-1
整型 : int 4字节 -2^31 到 2^31-1
长整型: long 8字节
浮点型:例如 4.5,8.9
单精度: float 4字节
双精度: double 8字节
字符:'a' '中' '3'
char 2字节
ASCII 0 - 127
Unicode \u0000 - \uffff
0 - 65535
布尔:
boolean true false
真 假
一个字节是八位二进制数:1 b = 8 bit (位) 0,1
位是最小计量单位
1 KB = 1024 B
1MB= 1024 KB
1GB = 1024MB
1TB = 1024GB
整数:
源代码中给出一个字面值,系统会当作int类型处理
Int n = 22;
Long n1 = 12346890640368009L
注:如果不加L,只会当作一个超了范围的整形
二进制 int n2 = 0b101;
八进制 int n3 = 017
十六进制 int n4 = 0x1f
为了增强可读性可以用下划线分割数 int n5 = 0b 1001_0000_1111
浮点数:
源代码中给出一个字面值,系统当作double类型处理
Double d1 = 34.5;
Float d2 = 56.7f; //需要加上F或者f
Double d3 = 3.5e20; //e 以 10 为底
Double类型可以用来表示十六进制的数,但是必须以 科学记数法表示:
double d4 =0x3.4p2; // p 以2为底
运算:表示范围很大,但是不是准确的
注意不要在数量级相差很大的浮点类型之间进行运算,会取一个相似的值
Double d6 = 3.4e30+1;
注意避免进行等量的判断。如果要进行精确运算,应该使用无限小数
Java.math.BigDecimal;
BigDecimal d10 = new BigDecimal(“0.1”);
BigDecimal d11 = new BigDecimal(“0.2”);
Double d12 = d10.add(d11).doubleValue();
System.out.println(d12);
字符型:
Char 2字节16位unicode字符 Unicode 0 – Unicode 2^16 -1
ASCII 0 - 127
Unicode \u0000 - \uffff
ASCII
ISO-8859-1 //英文中用的最多
Windows-1252
GB2312
GBK //中文中用的最多
GB18030
Big5 //不兼容GBK
Unicode编码
UTF32
UTF-16
UTF-8
引用数据类型:存的是地址
字符串 String
数组 []
类 class
接口 interface
布尔类型:
只支持true和false两个字面值,不支持0,1赋值
字符串
连接字符串 + :String str = “年龄是:” + age;
算术运算符:
浮点除法三个特殊的值
正无穷大:5/0.0
负无穷大:5/-0.0
NAN非数字:0/0.0
----------------------------------
自增
a++ ++a -> a = a + 1;
a-- --a -> a = a - 1;
运算规则:
赋值运算或者 输出语句中,那么 后缀 ,先赋值运算 或 输出,然后再自增或自减。
前缀,先自增或自减运算后,再赋值或输出。
------------------------------------------------------------------------------
类型转换
自动类型转换:
类型得兼容
类型小(低,范围小的)赋值给 类型高(范围大的)类型。
-128 127 -32768 32767
byte -> short -> int ->long->float->double
char ->
0- 65535
Char类型不包括负数
类型提升:
前提运算时,类型低的 提升为类型高的运算,结果采取
类型最高的数据类型 作为结果类型。
强制类型转换:
类型高 (范围大的) 赋值 给 类型低(范围小的).
(类型)数值。
--------------------------------------------------
即:比较运算符
> < >= <= == !=
运算结果是 boolean类型的
---------------------------------------------------
逻辑运算符
&& 与 一假false为假false true && true
|| 或 一真 true为真true true
! 非 取反
逻辑&& || !和位 & |的区别
1. &&和||进行逻辑运算
&和|可以进行逻辑运算,也可以进行位运算
2. &&和|| 短路效果
& 和| 非短路运算
------------------------------------------------
扩展赋值运算符
+= -= *= /= %=
Sum += 1;
代码分析:
Short n3 = 5;
N3 = n3 +5;
//short + int转为short,编译会出错
修改
N3 += 5;
扩展赋值运算符会进行自动的强制类型转换
----------------------------------------------
条件运算符
boolean
表达式一 ? 表达式二 : 表达式三
表达式一 运算的结果:
true -> 取 表达式二 的结果
false -> 取 表达式三 的结果
位运算符
与:&
两个位同时为 1 ,结果为1 ;一假为假
或:|
一个位为1,结果为1;一真为真
异或:^
相同为0,不同为1
非(取反):~
0为1,1为0
(负数变正数:减一取反)
左移:<<
向左移动 n 位,右边用 0补位
右移:>>
向右移动 n 位,左边是0用 0补位,是1用1补位
无符号右移:>>>
向右移动 n 位,左边都用 0补位
------------------------------------------------
优先级
()
逻辑!
算术:
* /%
+ -
关系:
> >= < <=
==!=
逻辑:
&&
||
条件:
?:
赋值:
=
--------------------------------------------
其他知识点
两个变量互换的几种办法
方法一:
intn1 = 5;
intn2 = 2;
/* n1 = n1 + n2;//7
n2 = n1 - n2;//5
n1 = n1 -n2;//2
*/
方法二:
n1 = n1 ^ n2; //一个数被另一个数异或两次还等于这个数
n2 = n1 ^ n2;
n1 = n1 ^ n2;
方法三:
inttemp;
temp = n1;
n1 = n2;
n2 = temp;