计算机存储数据:寄存器 栈 堆
java只能控制:栈 堆
1.栈:
栈空间存取数据效率高
数据先进后出
存储空间小
JVM将基本类型的数据放在栈空间
2堆:
1.存取数据低
2.数据存放随机分配
3 堆的存储空间大
计算机高级语言普遍使用变量来管理内存中的存储数据
变量管理 基本类型存在栈中
变量管理引用类型
1.在栈中定义一个变量 变量存放数据为堆中地址
在堆中存储数据
离开作用域 jvm就回收变量
包装类
Byte Integer Long Double Float都有最大常量和最小常量 .MIN_VALUE .MAX_VALUE
Integer 还能转化二进制和十六进制
String Integer.toBinaryString(int value)
String Integer.toHexString(int value)
long float 赋值后面都要l(f)
整型比浮点型精度高 运算
float 32位1个符号位 指数8位 尾数23位 int 32 符号位1 尾数 31
double 64 1 11 52 long 64 1 63
char :java底层都是Unicode 实现 16位
转移字符:'\n' :回车 '\t' 制表符表示向右跳8-10个字符
'\u4e26':表示Unicode 码对应的字符 Unicode码一定要十六进制
小类转大类:
1小类转大类 jvm自行转换 不许额外代码
2.自动类型转换也叫“隐式类型转换” 规则:符号位自动扩展 负数补1,正数补0
3.转换情况:
(1).byte->short->int->long->float->double
(2)int和char类型的数据在某些情况下可以自动相互转换
int i = 'B';
4精度丢失:正数到浮点数 转换会损失精确度
大类转小类
强制类型转换 小心精度丢失 丢最高位
args
通过main方法的args数组可以从控制台获取一组字符串数据
Scanner:用于扫描从控制台输入的数据可以接受字符串和基本数据类型数据
通过Scanner从控制台获取数据
常用方法
1 String next() next以空格或回车做一次输入的结束所以不能接受空格
2 String nextLine() 可接受空格
3 int nextInt() 接受控制台输入的一个int类型
4 double nextDouble 。。。
5 boolean nextBoolean() 。。。 以上5条 可以控制台直接输入
6输入char类型的数据
Scanner类没有提供直接输入char类型的方法 可用charAt()从next()或nextLine()获取输入字符
eg:Scanner sc = new Scanner(System.in)
System.out.println(姓名:)
String name = sc.next(); //这里就是直接在控制台输入