🌱博主简介:是瑶瑶子啦,一名大一计科生,目前在努力学习C进阶、数据结构、算法、JavaSE。热爱写博客~正在努力成为一个厉害的开发程序媛!
📜所属专栏:爪洼岛冒险记
✈往期博文回顾:【爪洼岛冒险记】第1站:Java重要特性,JDK,JRE,JVM区别和联系,环境变量
🕵️♂️近期目标:成为百粉小博主。持续输出JavaSE、C进阶、数据结构、算法相关的优质博客,
🙇♀️写博客理念:力求用自己的语言加上自己的理解去阐述知识知识、技术。喜欢画图、思维导图去描述过程和知识之间的联系。
🎡您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!
🌺:“再牛的程序员也是从小白开始,既然开始了,就全身心投入去学习技术”
爪洼岛冒险记-第2站
- 🧜♀️前一站快速回顾:
- JVM&JRE&JDK
- Java程序被执行的流程:
- 🛸本站任务:
- 🤦♀️关于class文件的一些疑问
- ❗编码格式问题:
- 🙆♀️Java中输出语句有哪些?
- 🗽搞定数据类型:
- ⭐字节类型:byte
- ⭐短整形:short
- ⭐整形:int
- ⭐长整型:long
- ⭐双精度浮点型:double
- ⭐单精度浮点型:float
- ⭐字符类型:char
- ⭐布尔类型:boolean
- ⭐字符串类型:String
- ❗关于java数据要知道&注意的:
- 🎃数据类型存在的意义:
- 有关java中的"变量",你需要知道的:
- 1,什么是变量?
- 2,java中变量命名规则:
- 3,变量和数据类型的关系?
- 4,变量使用需注意:
- 5,局部变量作用域
- 关于常量你需要知道:
- 常量的分类:
- 常量的特点
- Java中的类型转换(整形)
🧜♀️前一站快速回顾:
JVM&JRE&JDK
Java程序被执行的流程:
- 程序员用Java写一个源文件—>
.java文件
(程序员看得懂,机器看不懂) - 让JDK中javac.exe来帮忙翻译一下吧~—>编译成
.class字节码文件
[可执行文件] (机器看得懂的) - 让虚拟机帮我们执行一下java程序吧—>利用JDK中java.exe把这个程序装进jvm中
- JVM把class文件解释给本地系统执行.—>“一处编译,随处运行的体现”!
🛸本站任务:
🙆♀️write int the front:
🥫此站路途较为轻松,可不要小看基础知识哦,把这些基础和细节收入囊中,后来的路途也不会那么艰辛,现在就出发吧~🎊
🌺一些没有讲到的也不要着急,比如我最开始学java的时候总是去想public是什么,static是干什么的,main里面的参数有什么作用,不要着急~这些涉及到之后的知识,我也都会在后面讲到的,所以不要太过焦虑,和着急.
- 解决关于.class文件的一些疑问
- 编码格式问题
- 学会java中三种输出语句
- 搞定java基本数据类型🏋️♀️
- 搞定变量
- 搞定常量
- 搞定类型转换知识点(整形)
🤦♀️关于class文件的一些疑问
class Test{
public static void main(String[] args){
System.out.println("Test");
}
}
class Test2{
public static void main(String[] args){
System.out.println("Test2");
}
}
- 🙋♀️"为什么我编译一个源文件,生产了2个.class可执行文件呀?"
- 🧛♀️:答:并不是一个源文件对应一个字节码文件哦~一个类对应一个字节码文件,我要用到哪个类,就去加载哪个类(要执行哪个class文件就去加载哪个字节码文件),不是"一股脑"全部加载,但是一般一个java文件只写一个类.
❗编码格式问题:
在写java程序的时候,我加了一行注释,去编译,结果报错了
🧛♂️:原因:jdk默认采用GBK编码格式,而我们的源程序中包含了中文,所以我们要把编码格式切换成utf-8
(世界通用语言编码).
javac -encoding utf-8 Test.java
🙆♀️Java中输出语句有哪些?
- 打印并换行
System.out.println("hh");
//类比C中的:printf("hh\n");
- 打印,不换行
System.out.print("hh");
//类比C中:printf("hh");
- 格式化打印
System.out.printf("%s","hh");
//类比C中:printf("%s","hh");
🗽搞定数据类型:
这一站,我们要搞定的是基础数据类型+String类型
区分基本数据类型和引用数据类型,关键是看变量里面存的是数值还是地址.
⭐字节类型:byte
- 所占字节:
1
- 取值范围:
-2^7 ~ 2^7-1
⭐短整形:short
- 所占字节:
2
- 取值范围:
-2^15 ~ 2^15
⭐整形:int
- int所占字节:
4
- 和C相比,没有signed和unsigned之分,同一认为是有符号(变量有正负之分)
- 取值范围:
-2^31 ~ 2^31-1
int a=2;
System.out.println(a);
System.out.println(Integer.MAX_VALUE);//打印int类型变量的最大值
System.out.println(Integer.MIN_VALUE);//打印int型变量最小值
//关于什么是Integer,之后会讲到,现在了解一下就OK
⭐长整型:long
- 所占字节:
8
- 取值范围:
-2^63 ~ 2^63-1
long a=2L;//数字后面加上L,表示当前这个数字是long类型
System.out.println(a);
System.out.println(Long.MAX_VALUE);//打印长整数的最大值
System.out.println(Long.MIN_VALUE);//打印长整型变量最小值
⭐双精度浮点型:double
- 所占字节:
8
- 由于double的精确度较高,所以工程中一般使用double
⭐单精度浮点型:float
- 所占字节:
4
⭐字符类型:char
- 所占字节:
2
char a='h';
char b='啊';
⭐布尔类型:boolean
- 所占字节:1 byte 或者1 bit(其实是不确定的,因为JDK没有规范boolean类型的大小,有些书说1byte也有说是1bit)
- 取值:
true
&false
⭐字符串类型:String
- 引用数据类型
- 其他类型和字符串拼接,结果是字符串(其他数据类型在字符串前除外)
public static void main(String[] args) {
String str="yaoyao";
System.out.println("yaoyao"+10+2);//
System.out.println(10+2+"yaoyao");//计算机先计算10+2,得出12,再和字符串拼接
}
❗关于java数据要知道&注意的:
- java中所有数据类型的字节数不会根据操作平台而变化.(不管是X64还是X86,4个字节就是4个字节)
- java中没有signed和unsigned之分,统一都是有符号(有正负之分)
- 不管是单精度浮点数还是双精度浮点数,在内存中存储都是不精确的.具体可以看:进入内存,透彻理解数据类型存在的意义,整形在内存中存储,大小端字节序,浮点型在内存中存储.
- java是强类型语言(严格要求等号两边类型一致)
eg:
float a=3.14;//编译不通过,报错,12.5默认是double
float a=3.14f;//编译通过
- 字符在内存中是以整数的形式来保存.C语言中字符和Ascii码表对应,而在Java中字符和
Unicode
表对应,由此char类型能表示更多的字符,包括中文. - 在java中所有数据类型都是有取值范围的,一旦给变量赋值超过取值范围,则编译时报错(这点也是和C不一样的).再次感慨java在安全这块做得周到!
byte a=180;//编译报错
🎃数据类型存在的意义:
🙇♀️关于数据类型存在的意义,和计算机如何根据数据类型来为某个变量开辟内存空间,搞定这两点,大家可以阅读我的这篇博客:进入内存,透彻理解数据类型存在的意义,整形在内存中存储,大小端字节序,浮点型在内存中存储.
有关java中的"变量",你需要知道的:
成员变量涉及到类和对象的知识,咱们后期再讲~
1,什么是变量?
🦉:变量的本质其实就是一个容器,用来存放数据的容器.在程序运行的时候才为变量分配内存空间,填充数据.
2,java中变量命名规则:
- ⭐
小驼峰
命名法.(首字母小写,其余单词首字母大写) - 🌕不能以数字开头(硬性)
- ⭐推荐使用名词
- ⭐不要使用拼音
- 支持数字,字母,下划线,美元符号(硬性)
- 大小写敏感(硬性)
- 🥙补充:Java中,类名用
大驼峰
eg:
int myAge=19;
3,变量和数据类型的关系?
👩🏫在上面提到的博客里面其实也解释得透彻了.数据类型限制了变量向内存申请空间的大小(这个容器可以装多少东西),以及计算机看待该变量空间的视角(💻:我认为你这个容器里面存储的是什么东西);
4,变量使用需注意:
- 局部变量不可不初始化,若不初始化,则报错!(安全性)
“编译器当然可以为局部变量附一个默认值,但是未初始化的局部变量更有可能是程序员的疏忽,所以采用默认值范围会掩盖这种失误。因此强制程序员提供一个初始值,往往能够帮助找出程序里的缺陷。”–Bruce Eckle《Thinking in Java》
5,局部变量作用域
作用域:作用范围
- 怎么找变量作用域:?
- 答:找对应花括号,一对大花括号就是一个作用域,出了作用域就不行了.
关于常量你需要知道:
常量的分类:
- 字面值常量
int a=10;//10就是字面值常量
- 被final修饰的变量 (final类似于C中的const)
final int a=10;
a=20;//编译时报错
常量的特点
- 在程序编译的时候就确定了值是多少
- 在程序运行的时候不能被修改
Java中的类型转换(整形)
- 对于整形,不同变量之间赋值,变量范围小的可以赋值给变量范围大的.
int a=10;
long b=a;//b一定能装得下,编译成功
- 对于整形,把变量范围大的,赋值给变量范围小的,编译一定会报错.
long a=30;
int b=a;//编译报错
🌟虽然30没有超过int的范围,但是编译时期,a并没有向内存中申请空间并且填充数据,也就是说,编译器也不知道a是多少.编译器视角:你把long赋给int,这是万万不行的.
但是作为我们看来,确实需要的话,我们可以向编译器打包票:这个值不会超过int范围----强制类型转换
int b=(int)a;
- 将字面值常量赋值时,Java会针对被赋值变量的范围进行检查,若超过,则报错.
long a=30;
int b=30;//编译通过
⭐[和上面代码对比] 在执行int b=30时,编译器发现30没有超过int范围,所以编译成功.
- 隐式类型转换(类型提升)
byte a=2;
byte b=3;
byte c=a+b;//报错
⭐变量相加属于算术运算,要送入CPU进行运算,但是CPU处理数据的字节是4,所以在送入CPU之前我们需要把a+b提升为int,那么在编译器就会认为int赋值给byte,所以报错.
byte c=1+2;
🎊以上就是第2站的所有知识点了~希望对大家有所帮助.
如果有用,还请关注+三连.您的关注和三连能给瑶瑶子带来无穷的动力~~~
🌻可以订阅专栏爪洼岛冒险记(free),和瑶瑶子一起,穿梭Java岛,学习java,一起努力,从小白变大牛~🙇♀️