Java基础知识点(一)
一、JDK、JRE和JVM的关系
JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。
![](https://img.haomeiwen.com/i14270006/94e9e78ebf25a841.png)
![](https://img.haomeiwen.com/i14270006/e9aa1e11ac5466bc.png)
二、Hello World案例的编译和运行
public class HelloWorld {
/* 第一个Java程序
* 它将输出字符串 Hello World
*/
public static void main(String[] args) {
System.out.println("Hello World"); // 输出 Hello World
}
}
javac HelloWorld.java
java HelloWorld
![](https://img.haomeiwen.com/i14270006/d6535990b7556301.png)
三、关键字
类别 | 关键字 | 说明 |
---|---|---|
访问控制 | ||
private | 私有的 | |
protected | 受保护的 | |
public | 公共的 | |
default | 默认 | |
类、方法和变量修饰符 | ||
abstract | 声明抽象 | |
class | 类 | |
extends | 扩充,继承 | |
final | 最终值,不可改变的 | |
implements | 实现(接口) | |
interface | 接口 | |
native | 本地,原生方法(非 Java 实现) | |
new | 新,创建 | |
static | 静态 | |
strictfp | 严格,精准 | |
synchronized | 线程,同步 | |
transient | 短暂 | |
volatile | 易失 | |
程序控制语句 | ||
break | 跳出循环 | |
case | 定义一个值以供 switch 选择 | |
continue | 继续 | |
default | 默认 | |
do | 运行 | |
else | 否则 | |
for | 循环 | |
if | 如果 | |
instanceof | 实例 | |
return | 返回 | |
switch | 根据值选择执行 | |
while | 循环 | |
错误处理 | ||
assert | 断言表达式是否为真 | |
catch | 捕捉异常 | |
finally | 有没有异常都执行 | |
throw | 抛出一个异常对象 | |
throws | 声明一个异常可能被抛出 | |
try | 捕获异常 | |
包相关 | ||
import | 引入 | |
package | 包 | |
基本类型 | ||
boolean | 布尔型 | |
byte | 字节型 | |
char | 字符型 | |
double | 双精度浮点 | |
float | 单精度浮点 | |
int | 整型 | |
long | 长整型 | |
short | 短整型 | |
变量引用 | ||
super | 父类,超类 | |
this | 本类 | |
void | 无返回值 | |
保留关键字 | ||
goto | 是关键字,但不能使用 | |
const | 是关键字,但不能使用 | |
null | 空 |
![](https://img.haomeiwen.com/i14270006/fad71660ea471a49.png)
四、Java标识符
标识符就是用于给 Java 程序中变量、类、方法等命名的符号。
使用标识符时,需要遵守几条规则:
- 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:123name 就是不合法滴
- 标识符不能是 Java 关键字和保留字( Java 预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。如:不可以使用 void 作为标识符,但是 Myvoid 可以
- 标识符是严格区分大小写的。 所以,一定要分清楚 mixiaomi 和 MIxiaomi 是两个不同的标识符哦!
- 标识符的命名最好能反映出其作用,做到见名知意。
五、常量分类
常量类型 | 说明 | 举例 |
---|---|---|
字符串常量 | 用双引号括起来的内容 | “HelloWorld” |
整数常量 | 不带小数的数字 | 666,-88 |
小数常量 | 带小数的数字 | 13.14,-5.21 |
字符常量 | 用单引号括起来的内容 | ‘A’,‘0’,‘我’ |
布尔常量 | 布尔值,表示真假 | 只有两个值:true,false |
空常量 | 一个特殊的值,空值 | 值是:null |
public class ConstantDemo {
public static void main(String[] args){
//字符串常量
System.out.println("HelloWorld");
System.out.println("----------");
//整数常量
System.out.println(666);
System.out.println(-88);
System.out.println("----------");
//小数常量
System.out.println(13.14);
System.out.println(-5.21);
System.out.println("----------");
//字符常量
System.out.println('A');
System.out.println('0');
System.out.println('我');
System.out.println("----------");
//布尔常量
System.out.println(true);
System.out.println(false);
System.out.println("----------");
//空常量
//空常量是不能直接输出的
// System.out.println(null);
}
}
六、数据类型
Java 语言是一种强类型语言。通俗点说就是,在 Java 中存储的数据都是有类型的,而且必须在编译时就确定其类型。
在 Java 的领域里,基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址。
![](https://img.haomeiwen.com/i14270006/cb2be6a6c8f76d48.png)
![](https://img.haomeiwen.com/i14270006/cf1dce7a3da58e29.png)
关于 float 型和 double 型的区别
-
1.float是单精度浮点数,内存分配4个字节,占32位,有效小数位6-7位
double是双精度浮点数,内存分配8个字节,占64位,有效小数位15位 -
2.java中默认声明的小数是double类型的,如double d=4.0。如果声明: float x = 4.0则会报错,需要如下写法:float x = 4.0f或者float x = (float)4.0其中4.0f后面的f只是为了区别double,并不代表任何数字上的意义
-
3.对编程人员而言,double 和 float 的区别是double精度高,但double消耗内存是float的两倍,且double的运算速度较float稍慢。
char 型和 String 型的不同
-
1.char表示字符,定义时用单引号,只能存储一个字符,如char c='x';而String表示字符串,定义时用双引号,可以存储一个或多个字符,如String name="tom";
-
2.char是基本数据类型,而String 是一个类,具有面向对象的特征,可以调用方法,如name.length()获取字符串的长度。
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
整数 | byte | 1 | -128~127 |
short | 2 | -32768~72767 | |
int | 4 | -2的31次方到2的31次方-1 | |
long | 8 | -2的63次方到2的63次方-1 | |
浮点数 | float | 4 | 负数:-3.402823E+38到-1.401298E-45 正数:1.401298E-45到3.402823E+38 |
double | 8 | 负数:-1.797693E+308到-4.9000000E-324 正数:4.9000000E-324到1.797693E+308 | |
字符 | char | 2 | 0-65535 |
布尔 | boolean | 1 | true,false |
说明:E+38表示是乘以10的38次方,同样,E-45表示乘以10的负45次方
七、类型转换
把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量
![](https://img.haomeiwen.com/i14270006/5fc2e5fadc0b0330.png)
public class ConversionDemo {
public static void main(String[] args) {
//自动类型转换
double d = 10;
System.out.println(d);
//定义byte类型的变量
byte b = 10;
System.out.println(d);
short s = b;
System.out.println(s);
int i = b;
System.out.println(i);
long e =b;
System.out.println(e);
float y = b;
System.out.println(y);
double o = b;
System.out.println(o);
//这个是不可以的,类型不兼容
//char c = b;
//强制类型转换
int k = (int)88.88;
System.out.println(k);
}
}