文章目录
Java语言基础
包含java变量、八种数据类型以及基本数据类型中的转换。
一、变量
存数的,用于指代内存中的一块存储区域,指代的就是它所存的那个数;变量必须有特定的数据类型,不同的数据类型表示不同的数据存储结构
声明
变量使用前必须声明,指明其类型
int a; //声明一个整型变量,名为a
int b,c,d; //声明三个整型变量,名为b,c,d
命名
1)只能包含字母、数字、_和$符,并且不能以数字开头
int DE = 3;
int se = 3;
int _$ = 3;
int 3a = 3; //编译错误
2)严格区分大小写
int a = 3; //声明整型变量a,并赋值为3
int A = 3; //声明整型变量A,并赋值为3
3)不能使用关键字
int a = 3;
int public = 3; //编译错误
4)可以中文命名,但不建议;建议“见名知意”、驼峰命名法(变量多个:第一个首字母小写,其余大写)
int age = 3;
int studyTime = 200;
int 这是 = 3;
初始化
java变量在使用前必须初始化,第一次赋值
1)声明的同时初始化:
int a = 100; //声明整型变量a并赋值为100
2)先声明后初始化:
int a; //声明整型变量a
a = 100; //给变量a赋值为100
使用
1)必须与数据类型匹配
int a = 3.1415; //编译错误,数据类型不匹配
2)对变量的操作就是对它所存的那个数的操作
int a = 5; //声明整型变量a并赋值为5
int b = a + 10; //取出a的值5,加10后,在赋值给b
a = a + 10; //取出a的值5,加10后,在赋值给a
System.out.println(a); //输出a的值15
System.out.println("a"); //a,原样输出
3)变量在用之前必须声明并初始化
System.out.println(m); //编译错误,m未声明
int m;
System.out.println(m); //编译错误,m未初始化
int m = 100;
System.out.println(m); //输出m的值100
作用域
java变量存在范围,运行超出范围后,变量所占空间将被收回;同名变量,作用域不能重叠
int a = 10;
for(int i=0;i<10;i++) {
int a = 10; //编译错误,同名变量作用域重叠
}
for(int i=0;i<10;i++) {
System.out.print(i);
}
System.out.print(i); //编译错误,超出作用域
for(int i=0;i<10;i++) {
int a = 10;
}
int a = 10; //正确
二、数据类型
八种基本数据类型
类型名称 | 字节大小 | 说明 |
---|---|---|
byte | 1字节(8位) | 存储1个字节数据 |
short | 2字节(16位) | 兼容性考虑,很少使用 |
int | 4字节(32位) | 存储整数(常用) |
long | 8字节(64位) | 存储长整数(常用) |
float | 2字节(32位) | 存储浮点数 |
double | 8字节(64位) | 存储双精度浮点数 |
char | 2字节(16位) | 存储1个字符 |
boolean | 1字节(8位) | 存储true、false |
byte——字节型
byte(8位):字节型,1个字节,-128~127
byte b1=5,b2=6;
byte b3=(byte)(b1+b2); //结果为11
short——短整型
short(16位):短整型,2个字节,-32768~32767
short a = 300;
short b = 32768; //编译错误
int——整数类型
int(32位):整型类型,4个字节,-2147483648~2147483647
1)直接量,即直接写出的常量。整数的直接量默认为int类型,不能超出范围,否则会编译错误
int a = 1000000000; //编译错误,超出范围
2)两个整数相除,结果还是整数,小数位无条件舍弃
int a = 3/2;
System.out.println(a); //结果为1
3)运算时超出范围会发生溢出,溢出是需要避免的
int a = 2000000000;
int b = 2000000000;
System.out.println(a+b); //结果为-294967296,溢出
long——长整数类型
long(64位):长整型,8个字节,-9223372036854774808~9223372036854774807
2.1)长整型直接量为在数字后加L或l
long a=100000000000L;
2)算数运算时有可能超出范围,建议在第1个数字后面加L
long a=1000000000*3*10L;
System.out.println(g); //溢出
long b=1000000000L*3*10;
System.out.println(h); //long类型,300亿
3)System.currentTimeMillis()用于获取自1970.1.1零时到此时此刻所经历的毫秒数
long times=System.currentTimeMillis();
System.out.println(times);
float——单精度浮点型
float(32位):单精度浮点型,4个字节,表示float型需要加F或f
float = 3.14F;
double——双精度浮点型
double(64位):双精度浮点型,8个字节
1)浮点数直接量默认为double型
double = 3.14;
2)double型数据运算时,可能会发生舍入误差
double a = 3.0;
System.out.println(a-2.9); //0.10000000000000009
注意:如需要进行精确计算,可以使用BigDecimal
char——字符类型
char(16位):2个字节,字符类型事实上是一个16位无符号整数,对应的是字符编码
1)采用Unicode字符集编码,Unicode是世界通用的定长字符集,每个字符(char)都有一个对应的码(int),表现形式为char字符,实质上是int码
char c7=65;
2)字符必须放在单引号中,有且仅有一个
char c1='女';
char c2='f';
char c3='6';
char c4=' ';
char c5='中国'; //编译错误,单引号内只能包含一个字符
char c6=''; //编译错误,单引号内必须有值
3)特殊符号需要通过\来转义,如:‘\n’‘\t’‘\’‘\b’‘\r’‘/'’‘"’‘\u4e2d’
char c8='\\';
System.out.println(c8); //结果为\
4)数字编码:‘0’:48,‘1’:49…
char a = 48; //输出结果为0
char a = 49; //输出结果为1
5)英文编码:‘A’:65,‘B’:66…
char a = 65; //输出结果为A
char a = 66; //输出结果为B
6)字符是整数,可以参运算
char a = 'A' + 1; //输出结果为B
boolean——布尔型
boolean(8位):布尔型,1个字节,只能取值为true和false
boolean b1=true;
boolean b2=false;
boolean b3=250; //超出取值范围
三、基本类型间的转换:
类型从小到大依次为:byte,short(char),int,long,float,double
1)自动类型转换:从小类型到大类型可以自动完成
2)强制类型转换:从大类型到小类型需要强制转换,强转有可能会溢出和精度丢失
long a = 1024L * 1024 * 1024 * 4;
int b = (int)a; //会造成溢出!结果为0
double pi = 3.1415926535;
float f = (float)pi; //会造成精度丢失,结果为3.1415927
3)整数直接量可以直接赋值给byte,short,char,但不能超范围
byte a = 2;
short b = 2000;
char c = 65;
4)byte,short,char型变量参与运算时,先一律转为int再运算
byte b1=5,b2=6;
byte b3=(byte)(b1+b2); //结果为11
注:b1+b2实际为5+6,整型相加默认为int型,而b3为byte型,所以需要强转