0
点赞
收藏
分享

微信扫一扫

Java知识点(一):变量、八种数据类型、基本数据类型转换

木樨点点 2022-04-21 阅读 57
java

文章目录


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; //正确

二、数据类型

八种基本数据类型

类型名称字节大小说明
byte1字节(8位)存储1个字节数据
short2字节(16位)兼容性考虑,很少使用
int4字节(32位)存储整数(常用)
long8字节(64位)存储长整数(常用)
float2字节(32位)存储浮点数
double8字节(64位)存储双精度浮点数
char2字节(16位)存储1个字符
boolean1字节(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型,所以需要强转

举报

相关推荐

0 条评论