数据类型
DOC命令
#盘符切换 D:
#任何位置切换不同盘 cd /d c: (cd change directory)
#查看目录下文件 dir tree 文件夹
#表示上一级目录 ..
#进入目录下文件 cd 文件名
#返回上一级 cd..
#清理屏幕 cls (clear screen)
#提出终端 exit
#查看电脑 ip ipconfig
转义字符
// \b 退格(光标回退一格)
System.out.println("aaa\b n");//输出aan;
// \r 回车(光标回到开头)
System.out.println("aaa\r n");//输出n;
// \n 换行(光标移动到第二行的开头)
// \t 制表(tab键) 常用于对齐
System.out.println("A\tB\tC\t");//输出A B C
// \\ \" \' (正常转义不多解释)
注意事项:
-
要注意分辨 \r 和 \n 的不同。
-
\t可用于对齐操作。
变量
变量三要素(类型+名称+值)
变量是程序的基本单位
数据类型
byte A=10; //值相同,所占空间不同
short B=10; //同为10,但A占一个字节。B占两个字节的空间;
//java的整型常量默认为 int 型,long型需在后加'l'或'L'
int a=10;
long b=10L;
//java的浮点型常量默认为 double 型,float型需在后加'f'或'F'
double a=0.1//0可省略 a=.1;
float b=0.1f;
浮点型
浮点数 = 符号位 + 指数位 + 尾数位(尾数位可能会丢失,造成精度损失)(小数都是近似值)
浮点型细节
double a=2.2f//允许的,4字节的float 放进 8字节的double 不会溢出
float b=2.2 //不允许的,8字节的double 放进 4字节的float 会溢出
Double a=2.7;
Double b=8.1/3;
//人工计算的话为b=2.7 a=b ;
//但是由于计算机是二进制运算所以b=2.6999999997;a!=b;
//比较小技巧
if(Math.abs(a-b)<0.000001){ //考虑不同精度设置不同大小
System.out.println("true");
}
科学计数法 5.12e2 [5.12*10^2] 5.12e-2 [5.12*10^-2]
注意事项
- String属于类(class) 不属于基本数据类型
字符型
//char 本质是unicode码,默认输出为unicode对应的字符。
char x=98; //字符类型可以直接存一个数字;
System.out.println(x);//输出 a ; 输出时输出unicode编码代表的字符;
char x='a'+1;
System.out.println(x);//b
System.out.println((int)x);//98
System.out.println(x+1);//99
//两char类型 sout中使用+号,会转换成unicode编码输出
//'a' "a" 单引号括起来的才是 字符, 双型引号为字符串。
“+”的使用
- 两方为基本数据类型时,做加法运算(包括char)
char x='a';
char y='b';
System.out.println(x+y);//输出195;char转换成unicode编码
int a=10;
System.out.println(a+a);//输出20;
-
一方为字符串,则做拼接运算
System.out.println(10+"HELL");//输出10HELL;
类型转换
自动类型转换:java进行赋值或运算时,精度小的类型 自动转化为 精度大的数据类型。
char-> int -> long -> float ->double
byte -> short -> int -> long -> float -> double
//自动转换了类型
int a='a';//输出97
double d=80;//输出 80.0
-
多类型混合运算,系统首先自动转换为精度(容量)最大的数据类型,再运算
int a=10; a+1.1;//结果为double类型 a+0.1F;//结果为float类型
-
byte,short,char 他们三者可以计算,但会转换成 int 类型
byte a=1; short b=1;//a+b为 int 类型。a+a也为 int 类型
-
(byte,short)和 char 之间不会相互自动转换
byte a=10;//对,具体值赋值时,先判断是否在取值范内,是则可以 int n=10; byte a=n;//错,变量赋值,判断类型,而非具体数值
-
布尔类型不参与转换
强制类型转换:自动类型的逆过程,将精度(容量)大的数据类型转换成小的数据类型,使用时加上强制转换符号(),但可能造成精度降低或溢出。
int a=(int)1.9;//输出1;
int b=2000;
byte n=(byte)b;//输出 -48 (溢出)
int m=97;
char n=m;//错误,int精度比char高
char n=(char)m;//输出a,
-
强制符号只针对最近的操作数有效,往往会使用小括号提升优先级
int x=(int)10*3.5+6*1.5;//报错:double->int int x=(int)(10*3.5+6*1.5);//对 short s=12; s=s-9;//错,int->short; s=(short)(s-9);//对
String和基本数据类型转换
基本类型转String:基本类型+“”
int n=100;
String a=n+"";//输出为100 ,为String;
System.out.println(a+1);//输出1001;
String转基本类型
String a="123";
int num1=Integer.parseInt(n);
double num2=Double.parseDouble(n);
//以此类推