一、JDK\JRE\JVM区分
JDK(Java开发工具包)其中包括 Java开发工具和JRE(Java程序的运行环境), JRE中包括核心类库和JVM(虚拟机)。
JDK目录下文件意义:
a:bin目录:该目录用于存放一些可执行程序。
如javac.exe(java编译器)、java.exe(java运行工具),jar.exe(打包工具)和javadoc.exe(文档生成工具)等。
b:db目录:db目录是一个小型的数据库。
c:jre目录:"jre"是 Java Runtime Environment 的缩写,意为Java程序运行时环境。
d:include目录:由于JDK是通过C和C++实现的,因此在启动时需要引入一些C语言的头文件,该目录就是用于存放这些头文件的。
e:lib目录:lib是library的缩写,意为 Java 类库或库文件,是开发工具使用的归档包文件。
f:src.zip文件:src.zip为src文件夹的压缩文件,src中放置的是JDK核心类的源代码,通过该文件可以查看Java基础类的源代码。
JDK的下载安装,环境变量的配置不再赘述。
二、常用的DOS命令
命令 | 功能 |
盘符: | 进入相应盘 |
dir | 查看该目录所有内容 |
cd 路径目录 | 进入目录 |
md 目录名 | 创建目录 |
rd 目录名 | 删除目录 |
rd /s 目录名 | 强制删除目录(询问) |
rd /s/q 目录名 | 删除目录(不询问) |
cd… | 退回上级目录 |
cd…/…/ | 退回两级目录 |
cd / | 退回根目录 |
cd /d 路径名 | 跨盘符操作 |
del 文件名 | 删除文件 |
del *.扩展名 | 批量删除文件 |
cls | 清屏 |
exit | 退出 |
notepad mspaint | 记事本 画图 |
calc ipconfig | 计算器 查看ip |
三、标识符:接口、类、常量、变量等的名字
规范:
1.不能用关键字(Java中被赋予特殊意义的单词)。
2.不能以数字开头或纯数字。
3.不能使用特殊字符,$和_可以使用。
4.见名知意。
包的命名规范:
由小写单词组成。
类或接口的命名规范:
单个单词首字母大写,多个单词采用驼峰式命名(例如:DemoTest)。
变量或者方法命名规范:
大小写可以混用,但是首字母小写,单词由大写字母隔开(例如:setTest)。
四、常量及变量
基本数据类型的占用空间:
类型名 | 占用空间 |
byte | 1个字 |
short | 2个字 |
int | 4个字节 |
long | 8个字节 |
double | 8个字节 |
float | 4个字节 |
char | 8个字节 |
boolean | 1个字节 |
注意事项:
字符串常量双引号,字符常量单引号;变量必须对其赋值后才可以使用;在同一个作用域内不可以定义两个同名变量;定义long时候后缀l,定义float时后缀f
变量在运算中的细节:
1.举例:面试
byte a=10;
int b=20;
byte x=a+b;
System.out.println(x);
结果:编译不通过,显示可能丢失精度
分析:b为int型,x为byte型,byte装不下int
————————————————————————————————————————————
2.自动类型提升:byte,short,char型在参与运算时会自动提升为int型,若还有long,float,double型参与运算是则会提升为相应的long,float,double型。注意:byte short char 这三个之间不参与转换.
举例: 面试
short a=3;
short b=4;
short c=a+b;
System.out.println(c);
结果:编译不通过,显示可能都是精度
分析:变量a和b在参加运算是被提升为了int型。可以将第三行代码改为 short c=(short)(a+b)就可以编译成功,该操做是做了一波强制转换,但是不建议使用,因为可能会损失精度。
————————————————————————————————————————————
3.常量优化机制:多个常量在计算时会先计算再赋值。
举例: 面试
byte b1=3;
byte b2=4;
byte b3=3+4;
System.out.println(b3);
结果:编译成成功 输出7
分析:第三行体现了常量优化机制。
四、进制
互相转换和原码,反码,补码不再赘述;
进制的前缀:
进制名 | 前缀 |
二进制 | 0b |
八进制 | 0 |
十进制 | 没前缀 |
十六进制 | 0x |
五、运算符细节
1.+的作用:
a.两个量相加
b.当+的两端任意一端是一个字符串,此时+起连接符作用。
举例: 面试
System.out.print("5+5="+5+5);
System.out.print(5+5+"=5+5");
求运行结果? 结果分别是 5+5=55 10=5+5
————————————————————————————————————————————
2.++的使用细节
a.当++单独使用时(如 i++),放前放后都一样
b.混合使用时候:
++在前,先运算,后使用;
++再后,先使用,后运算;
举例:
b=1;
r=++b;
结果:r=2 b=r
b=1;
r=b++;
结果:r=1 b=2
————————————————————————————————————————————
3.+=细节,面试题
byte a = 10;
a=a+10;
System.out.print(a);
结果:编译不通过
分析:因为自动类型提升。
byte a=10;
a+=10;
System.out.print(a);
结果:编译成功 ,结果为10
分析:a+=10;会再底层做强制转换,相当于 a=(byte)(a+10);
————————————————————————————————————————————
4.&和&&;|和||的区别
两个符号的运算结果完全一样
区别在于:
&的两端都会运算
&&当左端为false时,右端不再执行;当左端为true时,有右端才会执行
I和||的区别同理
总结:&&和||的特点是当左端已经决定结果时,右端不再运行,所以&&和||的效率更高。
5.三元运算符
格式: 条件表达式?结果1:结果2
执行流程:当条件表达式为true时取结果1,为false时取结果2
举例:a>b?c:d
五、代码练习
交换两个变量的值不引入第三方变量
运算符练习
打印Hello world