大家好,我是Anya-.-,欢迎来到Anya的小世界。
本期Java内容与c有很多相似,学习过c的同学肯定会感觉到很熟悉,但是嗷,在熟悉的街角也可以看到不一样的风景~
常量
是指在程序运行期间,固定不变的量。
字面常量
又叫做常量值,通过数据直接显示。
字面常量的分类:
Java中数据类型分为基本数据类型
和引用数据类型
。
数据类型用来定义变量,我们可以这样理解,碗有大有小,大的用来盛汤,小的用来盛饭。程序运行时会给变量分配内存,至于分配多少看给变量定义了几个字节。数据类型与变量结合正是可以给变量定义多少个字节。
评 判 一 个 数 据 占 用 多 大 内 存 , 表 示 的 单 位 : ( 从 小 到 大 ) \color{Green}{评判一个数据 占用多大内存,表示的单位:(从小到大)} 评判一个数据占用多大内存,表示的单位:(从小到大)
bit byte kb mb gb tb
1 byte = 8 bit
1 kb = 1024 byte
1 mb = 1024 kb
1 gb = 1024 mb
1 tb = 1024 gb
四类:整型、浮点型、字符型、布尔型
引用数据类型有很多种,常见有数组、String、类、接口、枚举…
变量:程序运行过程中,可以修改的。
语法格式:
数据类型 变量名 = 数值;
public class TestDemo {
/**
* 整型:
* 1.大小:4个字节【可移植性强:不管是32位还是64位系统,int字节都为4个字节】
* 2.在Java里,int没有所谓的无符号整数。so,int既能表示正数,又能表示负数
* @param args
*/
public static void main(String[] args) {
//数据类型 变量名 = 数值
int a = 1;
System.out.println(a);
System.out.println("最大值:"+Integer.MAX_VALUE);
System.out.println("最小值:"+Integer.MIN_VALUE);
}
}
运行结果如下:
在Java,局部变量
在使用时必须进行初始化
,否则会编译不通过报错
补 充 : \color{RoyalBlue}补充: 补充:
局部变量:方法内部定义的变量成员变量:方法外定义的变量,在类里面,类里面有成员变量和成员方法
编译器会自动进行检查 你赋值的字面常量值是否超出了 当前数据类型能够表示的数据范围。
byte
是8个比特位,范围是-128~127
Anyway,下面这个报错原因与上面不一样,
前者是赋值的字面常量超过当前数据类型能够表示的数据范围,编译器自动报错;
后者是表达式右边进行了整型提升,4个字节欲赋值给一个字节的变量里。
正确方式,进行强制类型转换
输出结果为-128
有些同学可能会在这里有疑问了,128不是超过byte范围了吗?上面说超过当前数据类型能够表示的数据范围,编译器自动报错
哈哈哈不要急,跟小戴一起慢慢来~
这里的130是字面常量,
前文有提,此话重点在 字 面 常 量 \color{Red}字面常量 字面常量
嘻嘻,再回来,
这 里 会 解 决 你 之 前 的 疑 惑 \color{Black}这里会解决你之前的疑惑 这里会解决你之前的疑惑
a a a 是变量,所以,只能在程序运行的时候才能知道 a a a里面是几
编译的时候不知道 a a a里面是几,运行的时候 a + 1 a+1 a+1 一加等于128,由于128是四个字节,然后再 强 制 类 型 转 换 强制类型转换 强制类型转换 为一个字节。输出内容就变成了 − 128 -128 −128
6.2
6.2
6.2 默认是
d
o
u
b
l
e
double
double 类型的数据,
double类型占8个字节,而float类型的数据占4个字节
好家伙,那在Java中怎样定义一个float类型的变量呢?
如下图,直接在数据后面加 f
或者 F
表示该数据为
f
l
o
a
t
float
float 型的数据。
运行截图:
计算器中
1.1
×
1.1
=
1.21
1.1×1.1=1.21
1.1×1.1=1.21
但用程序写出来计算结果如上图
Why?
因为在计算机中,小数是没有精确的数字的,它只能精确到小数点后几位
f l o a t float float 类型的数据可以精确到小数点后6位
在Java中,没有
0
0
0 是假,非
0
0
0 是真的说法
Java的真值只有两个,就是
t
r
u
e
true
true 和
f
a
l
s
e
false
false
问:boolean几个字节?
嘻嘻,Java中没有明确规定
b
o
o
l
e
a
n
boolean
boolean 类型的大小
类型转换分为两种:
当小字节变量赋值给大字节变量时,发生自动类型转换
大字节变量直接赋值给小字节会编译器进行报错
so,需进行强制类型转换
注意所有的强制类型转换会出现精度丢失的情况
这里,小戴会分析两个比较有趣的报错~
What?
i
n
t
int
int 类型和
f
l
o
a
t
float
float 不都是4个字节吗?
是的,没错。
但是float类型表示的数据宽度宽于int类型,float类型除了可以表示整数之外,还可以表示小数。
如果编译器准许将float类型可以直接赋值给int类型,那小数该怎么办呢?
so,爱学习的你会了吗?嘻嘻,让我们继续往下看:
分析:
这里涉及到 类型提升
所有小于4个字节的数据进行运算的时候,都会先转为4个字节,然后再参与运算。
Moreever,
当两种不一样的数据类型 进行运算的时候,会把其中较小的数据类型,转换为较大的类型,再进行运算
这样可以提高运算的效率
C语言中没有String类型,但Java中有
String str = "hello";
Java中,这里的字符串常量"hello"
和C不一样,不是以\0
结尾,Java中没有这种说法。
每逢高考毕业季,是否选择复读是个热门话题,昨天看到群里有提想要回去复读的。
同作为一个21级大一下结束的湖南考生,我想了很久,以我的角度看,选择回去复读会面临着教材改革,知识闭塞等等的挑战,
这个问题真的像一个“妈妈和女朋友同时掉进水里,你会选择救谁” 难以选择的问题
不过我更喜欢往前面走,
只要我们充满期待,勇敢向前,都会有属于我们的花季。