Java语言基础
变量
变量代表的就是内存中的存储空间
变量的定义:数据类型 变量名; eg: int a;
变量的赋值:==变量名 = 值; == eg: a = 5;
同时定义并赋值:数据类型 变量名 = 值; eg: int a = 5;
同时定义多个变量:int a,b,c,d; int a = 3,b = 4,c = 5,d;
java中变量属于强类型,变量的类型 必须和 变量中的数据的类型一致。
数据类型
基本数据类型 八个
整型 <4 个> byte short int long
浮点型 <2 个> float double
字符型 <1 个> char Unicode编码
布尔型 <1 个> boolean
整型
byte 1字节 ----------> 8个bit 敏感单元位
1byte == 8bit 0 0000000 256种组合
用第一个 bit 位置来记录符号 0正数 1 负数
数值范围:-2的7次方 ~ 2的7次方-1 (-128 ~ 127)
short 2字节 == 16bit 65526种组合
数值范围:-32768 ~ 32767
int 4字节 == 32bit
数值范围:-2147483648 ~ 2147483647
long 8字节 == 64bit
注意:字面量超出int范围时,字面量后面必须加" L "或" l "
浮点型
float 4字节 == 32bit 单精度类型
注意:浮点型的字面值默认double类型,float类型赋值时,字面值后必须加" F "或" f "
double 8字节 == 64bit 双精度类型
字符型
char 2字节 数值范围:0 ~ 65535 存储Unicode码(万国码) 支持中文
布尔型
1字节 字面值只有true 和 false
注意:boolean 不参与任何运算和类型转换
引用数据类型
数组 类class(抽象类 abstract class) 接口interface 枚举enum 注解@interface
String SUN公司提供的一个类
String str = "beijing";
字面值使用成对双引号引起来 零 ~ 多个字符
基本数据类型的转换
java允许程序在运行时,根据数据类型的需要 改变数据的值
数据类型1 变量名1 <— (右边给左边赋值)数据类型2 变量2
同种数据类型之间可以直接进行赋值操作
数据类型不同的空间之间的赋值 ===> 转换问题
————— 基本类型 --------- 基本类型之间 可以直接转换<自动 强转>
————— 引用类型 --------- 引用类型之间 可以直接转换<自动 强制 — 上转型 下转型>
————— 基本类型 --------- 引用类型之间 不可以直接转换<间接 – 包装类/封装类>
long l = i;//i是int类型,在执行时,l是long类型,会自动调整右边的int为long类型后,再赋值(自动类型转换)
自动类型转换:右侧的所有数据 都能包含在左侧的数据类型中 (左侧的类型范围 大于 右侧的范围)
byte ---> short ---> int ---> long ---> float ---> double
char ---> int
强制类型转换:右侧类型的所有数据 不能被完全包含在左侧的数据类型中(左侧类型的范围 小于 右侧的范围)
语法:类型1 变量1 = (类型1)值;
a>高字节数据 赋值给 低字节,需要强转,数据可能会损失
b>浮点数 赋值给 整数 ,需要强转,数据可能会损失
c>4种整数类型(带符号数) 和 char (无符号数)转换时,需要强转
d>boolean 不能与其他类型之间发生转化
表达式和运算符
表达式:把 变量 和 字面值 通过运算符连接起来,形成的具有特写结果的一个算式。
表达式中的数据类型提升规则: a 运算符 b
- 如果a 和 b 有一个double类型,则表达式的结果是double类型
- 如果a 和 b 有一个是float类型,则表达式的结果是float类型
- 如果a 和 b 有一个是long类型,则表达式的结果是long类型
- 以上三种情况都不满足,则结果是int类型
运算符:用来指明对于操作数的运算方式
按操作数目分类:
单目 双目 三目
a ++ a + b (a > b)?x:y;
按运算符的功能来进行分类:
1)算术运算符:+ - * / %(取余运算)单目:++(自增) --(自减)
+ 操作数中有一个是String,则 + 变为字符串拼接字符
a ++ 先用后加 a -- 先用后减
++ a 先加后用 -- a 先减后用
2)赋值运算符:= 赋值符号 将=右边的内容(值 引用) 存入=左边的变量空间内
= += -= *= /= %=
注意:复合赋值运算符 不会发生 类型的提升
3)关系运算符: == != > >= < <=
关系运算符的结果是boolean.
区分 = 和 == 区别:
= 赋值符号 将=后面的结果(值 引用)存入=左边的变量空间内
== 比较符号 比较 == 前面 和 == 后面的元素(值 引用)是否一致
4)逻辑运算符:&逻辑与 ^逻辑或 !逻辑非 &&短路与 ||短路或
逻辑运算符前后连接的两个都是 boolean 的值 最终的结果还是boolean
一元逻辑运算符
&逻辑与 可以理解为中文的"和","并且"意思 &前后两个条件必须同时满足 最终才为true
|逻辑或 可以理解为中文的"或者" | 前后两个条件只要有一个满足 最终就为true
^逻辑异或 前后两个表达式只要结果不相同 最终结果就为true
!逻辑非 可以立即为中文的"不" 将原来的结果取反
二元逻辑运算符
&& 逻辑与 —— 两个数都为true结果才为true,有一个为false结果即为false
短路与 —— &&运算的第一个操作数是false,则右侧的表达式不再计算,自动发生短路
|| 逻辑或 —— 两个数都为false结果才为false,有一个为true则结果为true
短路或 —— ||运算的第一个操作数是true,则右侧的表达式不再计算,自动发生短路
5)三元运算符/条件运算符: 布尔表达式?值1:值2 (参与操作的数有三个构成)
计算布尔表达式的值,如果是true ,则结果是值1 ; 如果为false ,则取值2
6)位(bit)运算:&按位与 |按位或 ^按位异或 ~按位取反 <<按位左位移 >>按位右位移 >>>按位右位移(无符号)
运算符的优先级:
初单算关逻条赋
() 单目 算术 关系 逻辑 条件 赋值