知识点
Java基础
1、什么是JDK、JRE、JVM?
JDK是Java开发工具包,它是功能齐全的Java SDK,它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdk),它能够创建和编译程序。
JRE是Java运行时环境,它是运行已编译Java程序所需的所有内容的集合,包括Java虚拟机(JVM),Java类库,Java命令和其他的一些基础构件,但是它不能用于创建新程序。
JVM是运行Java字节码的虚拟机,JVM有针对不同系统的特定实现(windows、Linux、macOS),目的是使用形同的字节码,他们都会给出相同的结果。
2、JavaSE、JavaME、JavaEE各自是干嘛用的?
JavaSE是桌面应用程序,包含了支持Javaweb服务开发的类,并为JavaEE提供基础,主要是客户端图形界面软件的开发,JavaSE是JavaEE&JavaME开发技术的基础,学习JavaEE之前一定要学JavaSE。
JavaEE是服务器程序和分布式程序,用于服务器,桌面嵌入式环境和实时环境中使用的Java应用程序,主要用于互联网B/S架构软件的开发,所谓的B/S架构就是 浏览器/服务器 架构,目前是Java开发的主流。
JavaME是移动设备和嵌入式设备程序,已经不再实用,被Android和iOS所代替。
3、Java代码的编译和运行过程
1、javac编译命令 将Java源文件编译成字节码文件
2、java编译命令 运行字节码文件到JVM虚拟机
4、JVM跨平台
1、跨平台就是一个程序既能在windows、Linux、macOS上运行,这就是跨平台。
2、JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。
5、命名规范
包名命名规范:1、全小写、反域名
类名命名规范:1、英文、有意义、大驼峰
2、首字母大写、如果有多个单词,每个单词的首字母都要大写
变量名\函数\参数命名规范:1、小驼峰
6、请问一个源文件中,可以有多少个类?有什么约束?
可以有多个类,但是只能有一个公共类,并且公共类的名字要和文件名相同
7、八大基本数据类型及其所占字节
关键字 | 占用内存 | 取值 | 默认值 |
---|---|---|---|
byte | 1字节 | -2^7 ~ -2^7-1 | 0 |
short | 2字节 | -2^15 ~ -2^15-1 | 0 |
int | 4字节 | -2^31 ~ -2^31-1 | 0 |
long | 8字节 | -2^63 ~ -2^63-1 | 0L |
float | 4字节 | -3.403E38 ~ 3.403E38 | 0.0F |
double | 8字节 | -1.798E308 ~ 1.798E308 | 0.0D |
char | 2字节 | 表示一个字符 | ‘\u0000’ |
boolean | 1字节 | 只有两个值 | false |
8、为什么Java要设计四个整型
Java中能存整数的类型有四个,并且每一个占据的内存大小不一样,导致存储数据的范围不一样。
所以Java希望我们根据实际需求选择合适的数据类型,以此来节省计算机资源。
9、Java中char类型是否能存储汉字,为什么
可以 因为一个汉字所占有的内存空间是两个字节,而char的占用内存是两个字节,所以可以存储,但是只能存储一个汉字。
10、自动类型转换
11、强制类型转换就是欺骗编译器,依然会出现数据溢出的情况
public static void main(String[] args) {
int a = 129;
byte b = (byte)a;
System.out.println(b); // -127
}
因为byte的字节是一个字节,大小范围控制在-2^7 ~ 2^7-1,129>127,所以发生了数据溢出的情况,科学家定义的时候是一个环,最大的数字后面就是最小的数字。
12、前置++和后置++的区别
public static void main(String[] args) {
int a = 10;
int b = a++;
int c = ++a;
// 12---10----12
System.out.println(a + "---" + b + "----" + c );
}
1、a=12,无论是前置还是后置,都会对结果进行自增1,10经过了两次自增变成了12。
2、b=10,首先将a的值赋值给b,然后a进行++,所以b=10。
3、c=11,直接将a自增1的值直接复制给c。
13、类型提升
Java中的运算结果也是有数据类型的,运算结果的类型取决于参与运算的变量,并且会自动提升为大类型。
public static void main(String[] args) {
int a = 10;
int b = 5;
int c = b/a;
System.out.println(c);
}
此时输出c的值是0.此时是将b除以a的结果赋值给c。所得的结果 0.5 但是结果的类型取决于参与运算的变量
b是int类型 ,a也是int类型 ,所以结果类型也是int,所以结果就变成了0。
然后将0赋值给C,所以输出c的时候得到0.
此时我们如果想要准确的结果 就需要 改变 b 或者 a的类型 让其能保留小数
14、请问 以下代码有问题吗 为什么?
public static void main(String[] args) {
short a = 20;
a = a+5;//会出错,因为a+5就变成了int数据类型,而a为short类型,所以会出错。
short b = 20;
b += 5;//没有问题,编译成字节码文件后,编译器会进行强制类型转换
}
15、字符串拼接
+号在Java中也有两种运算意义
1、当两个基本数据类型相加时,就是数学相加。
2、当有一个是字符串时,就变成了字符串拼接。
16、字符串时基本数据类型么
字符串不是基本数据类型
Java中只提供了八大基本数据类型
1、byte 2、short 3、int 4、long 5、float 6、double 7、boolean 8、char