JAVA学习笔记(一) 基础变量

发布于:2022-12-31 ⋅ 阅读:(437) ⋅ 点赞:(0)

我最近在学习JAVA,在学习之余,会记录笔记。我每隔几天会分享一下我的学习心得,来和大家一起学习。

一.byte类型

byte类型是JAVA中最小的数据类型,数据大小是-2^7~2^7-1,也就是-128~127.

byte max= Byte.MAX_VALUE;
byte min= Byte.MIN_VALUE;
System.out.println(max);
System.out.println(min);

输出:127

-128

我们要思考一个问题,byte是占用八个字节,那么为什么范围是-128~127呢?                                首先,在Java中,除了char类型和boolean类型以外,其他基本数据类型都是有符号的,也就是最高位1为负数,最高位0为正数

byte b= (byte) 0b11111111;
System.out.println(b);

 输出:-1

byte b= (byte) 0b00000001;
System.out.println(b);

输出:1 

现在系统讲解一下这个二进制是怎么工作的:

首先最开始0b是二进制的意思,b就是binary,是二进制的意思,然后是后面的二进制工作方式。

计算机里有三种存储,分别为原码,反码,补码。

首先是正数:原码=反码=补码,也就是说:

十进制:1

二进制:

原码:00000001

反码:00000001

补码:00000001

那么负数是这样的

十进制:-1

二进制:

原码:11111111

反码:1000000

补码:1000001 

反码的意思是在原码的基础上,除了符号位以外,全部取反,比如11111111,除了第一位,剩下的所有数字都取反,也就是1变0,0变1,就变成了10000000,补码就是在反码的基础上加1,就变成了10000001,输出-1。

那么回到byte变量的范围,127就是01111111,即2^8-1=127。-128就是10000000

反码:11111111,即127,补码再加1就是128,再加上首位的1也就是负号,就是-128了。

二.int类型 

 int类型的范围-2147483648~2147483647:

System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);

输出:2147483647
-2147483648 

这个就是一般使用的数据类型,日常使用应该是足够的。

三.long类型 

long类型的范围:-9223372036854775808~9223372036854775807

System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);

输出:9223372036854775807
-9223372036854775808

这里要注意一下,上述的byte,int,long都是整型变量,也就是不能存储小数,下面介绍的float和double就是浮点类型的变量 

四.float类型 

float类型的范围1.4E-45~3.4028235E38:

System.out.println(Float.MAX_VALUE);
System.out.println(Float.MIN_VALUE);

输出:3.4028235E38
1.4E-45 

这里要注意:浮点类型的标准是double,什么意思呢?打个比方,比如科学里距离的标准单位是m,质量是g,所以:

float a=1.2;

是不合法的,因为1.2默认为double类型,然而变量a是float类型,因为double和float类型的精确度是不一样的,所以转换的是否有可能会丢失精度,所以:

float a=1.2f;

这样就是合法的了,1.2f就是float类型的,就可以正常赋值了。 

五.double类型 

double类型的范围4.9E-324~1.7976931348623157E308:

System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);

输出:1.7976931348623157E308
4.9E-324 

这时候可能有人要问了,long类型也才十进制下的十几位,这个double和float类型怎么这么牛逼,double都直接干到了10^308,这时为什么呢?

原来,double和float是不精确的,什么意思呢?

float t1=0.1f;
double t2=0.1;
System.out.println(t1==t2);

输出:false 

由此可以看出,浮点数是不精确的,比较数字不要使用double和float,可以使用BigDecimal

六.char 

这个就是字符类型,如下为使用方法:

char a;//定义
char b='a';//第一种赋值方式
System.out.println(b);
char c=65;//第二种赋值方式
System.out.println(c);

输出:a

第一种赋值方式就是非常简单的把字符a赋值给变量b,这里使用的是单引号,字符要使用单引号,字符串使用的是双引号。

第二种赋值方式是使用ASCLL码,具体这是个什么自己百度。再ASCLL编码中,65对应的是A,所以输出A。

int a=100;
a=a-'0';
System.out.println(a);

输出:52

 这里的a是int类型,然后字符0由于int类型就强行转换为0对应的ASCLL码48,所以就相当于100-48=52.所以输出52。

 然后是转义符,什么是转义符呢?

比如说,有一个题目要将名字为a的char类型赋值为‘,也就是把’(单引号)赋值给a,应该怎么写呢?

char a=''';

这样肯定会报错,那么怎么写呢?这时候就要使用转义符了:

char a='\'';
System.out.println(a);

输出:‘ 

还有一些转义符:

转义符 含义
\b 退格(backspace)
\n 换行
\r 回车
\t 制表符(TAB)
\" 双引号
\' 单引号
\\ 反斜杠

七.boolean

这个就是一个布尔类型的变量,这个主要使用在程序的标记中,比如登陆成功后这个变量就有可能从false变为true。

boolean a=true;
System.out.println(a);

输出:true 

这里就是声明了一个名叫a的boolean类型的变量,并且赋值为true。

这里要注意一点,这个和C++是有区别的,C++里可以给布尔类型赋值为数字,0为false,其他数字都是true,然而Java只能使用true和false

八.进制转换

int t1=65;  //十进制
int t2=065;  //八进制
int t3=0x65;  //十六进制
int t4=0b1000001;  //二进制
System.out.println(t1);
System.out.println(t2);
System.out.println(t3);
System.out.println(t4);

输出:65
53
101
65 

 

本文含有隐藏内容,请 开通VIP 后查看