java中的两大内存区 栈 变量 堆 变量后面的值
格式:
数据类型 变量名 = 常量\其他已赋值的变量;
数据类型 变量名; 这种叫变量的声明
变量名 = 初始化值; 声明后再赋值
一行定义多变量:
数据类型 变量名a,变量名b,变量名c;
x = 13;
y = 14;
z = 15;
数据类型:
基本数据类型:
4类8种:8大基本类型:
整数类型:
byte: 1个字节 1KB = 1024B 1B = 1字节 1字节 = 8bit 1bit = 1个二进制位
short: 2个字节
int: 4个字节
long: 8个字节
小数类型:
float: 4个字节
double: 8个字节
布尔类型:
boolean: true false
字符类型:
char: 2个字节 所有的被''包裹起来的都是char类型
''中 有且只能有一个字符 'a' 'ab' '13' '胡'
引用数据类型:
类 接口 数组
java中 整数类型默认是int类型
小数类型默认是double类型
boolean类型默认是false
定义变量时 需要注意 定义float 需要在数据后面加f
定义long类型需要在数据后面加L
long l = 12456688L;
float f = 13.3f;
数据类型的强制转换:
大专小
数据类型 变量名 = (数据类型)值;
前后数据类型保持一致
变量的强制转换 必须在同一个大类型中进行转换,不能跨类型转换
比如 小数类型可以转为整数类型
但是小数类型不能转为字符 布尔类型
变量的作用域问题:
局部变量:
一般是在方法中定义
然后局部变量必须要有初始化值 如果没有初始化值就去使用该变量 就会报错
作用范围 只有在当前方法内 出了该方法 就不能再使用
成员变量:
定义在类中方法外的变量叫做成员变量 他的作用域是整个类
成员变量可以不赋值 系统会默认给每个类型一个默认值
整型 0 小数类型 0.0
布尔类型 false char '' 字符串类型 ""
GBK: 一个汉字等于两个字节
utf-8: 一个汉字等于三个字节
常量:
在运算中 其值不会发生改变的数据 叫做常量
整数类型: 所有的整数
小数类型: 所有的小数
字符类型: 所有被''包裹起来的
布尔类型: true false
字符串类型: 所有被""包裹起来的
空常量: null
常量可以被输出语句直接打印输出
转义字符:
\
\r\n:代表一个换行符
\t: 制表符 代表一个tab键
\f:
java中整数类型的运算都会默认提升到int类型 然后开始运算
所以 运算后不能赋值给小类型 如果想要给小类型 需要对运算后的整体结果进行强制转换
运算符:
算数运算符: + - * / % ++ --
+ : 在做算数运算时 + 就是求和的
还可以表示正数
作为字符串的连接符去使用 字符串于任何类型做拼接运算 得到的最终结果都是字符串本身
程序的运行顺序 :从左到右 从上到下
++: 在自己原本的基础上+1
--: 在自己原本的基础上-1
左右两边都可以放数据 但是必须放变量 不能是常量
当++或者--不参与任何运算符运算的时候 ++ -- 在前或者在后没有区别
但是如果 ++或者--参与了运算 + - * / % = ()
那么 ++a 就会先自增 然后在运算
如果是 a++ 会先运算 后再自增
赋值运算符: = += -= *= /= %=
+=:将符号左右两边的值求和之后赋值给左边 符号左边必须为变量 不能是常量
帮我们规避掉了类型的强制转换问题
关系运算符: > >= < <= != == 最终结果只有两个值 要么是true 要么是false
我们一般把关系运算符连接起来的式子 叫做关系表达式
==:比较两个数据是否相同 相同返回true 不同返回false
!=:跟上面相反
关系运算符不允许出现区间比较 类似于 a > b > c
逻辑运算符: &(与) |(或) !(非) ^(异或) &&(双与\短路与) ||(双或\短路或)
一般情况下 逻辑运算 & | ^ 左右两边是两个boolean类型的值或者是两个boolean类型的表达式
&:符号左右两边的boolean结果都为true的时候 最终结果是true 有一个为false 结果就是false
|:符号左右两边的boolean结果都为false的时候 最终结果是false 有一个为true 结果就是true
^:符号左右结果相同为false 结果不同为true
!:取相反数
&& 和 || 他的操作跟 & | 是一样的 但是多了一个短路效果
只要 && 左边结果为false 那么右面就不再参与运算
只要 || 左边为true 那么右边就不再参与运算
当与或异或参与运算的时候:
5 & 8 =
5 | 8
5 ^ 8