目录
一、Java语言概述
1.1 Java诞生和的发展
- Java是在1990年,由Java之父James Gosling和合伙人合作参与“绿色计划”,后来研究出一套叫做“Oak”的语言,后来改名为Java。James Gosling被称为Java之父;
- Java的1.0版本1997年开始更新,直至2003年更新至1.4.2版本,之后直接更名到5.0版本其实是(1.5.0)。是一个大版本的跨越。
1.2 Java的应用平台和跨平台原理
- Java的应用平台有JavaSE-标准版、JavaEE-企业版和JavaME-小型。
- Java可以在任意操作系统(Windows、Linux、Mac)上运行,主要是通过JVM(Java Virtual Machine)即分别在不同操作系统上安装上对应的JVM即可运行Java程序。
1.3 JVM、JRE、JDK
- JVM是Java虚拟机,Java程序需要运行在JVM上,不同的系统平台有自己的虚拟机;
- JRE,Java Runtime Environment即Java运行环境。内部包含JVM;等于JVM+核心类库;
- JDK,Java Development Kit,Java开发工具箱。内部包含JVM和JRE。等于JRE+Java开发工具。
1.4 Java开发环境搭建。
- 建议开发工具IDE安装路径不要有中文或者空格等特殊符号。
1.4.1 Java环境变量设置
- 设置环境变量的目的:设置环境变是为了在任意路径可以访问JDK和JRE工具;
- 设置环境变量注意事项:创建变量名JAVA_HOME、添加path路径,%JAVA_HOME%\bin;
二、IDE工具之Eclipse
- 使用Eclipse打印出HelloWorld
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
三、Java语法规范
3.1 常量和变量
3.1.1 常量
- 分类: 字面值常量和自定义常量。
A. 字面值常量
a. 整数常量: 123,321等,就是整数。
b.小数(浮点)常量: 1.2 2.1,带有“.”符号的常量;
c.字符常量: 带有单引号‘’的常量,一个单引号内可以方一个字符即两个字节;其中比较特殊的一个字符常量是’\u0000’
d.字符串常量: 用双引号“”引起来的都是字符串常量。
e.布尔常量: 只有true、false这两个值且都是关键字;
f. 空常量: 只有Null这一个。它可以复制给引用数据类型(类、接口、数组)表示该引用不在指向堆内存数据;当它赋值给数组的时候arr = null,数组中的元素会出现空指针异常。
B.自定义常量
a. 定义:用final修饰变量就是字定义常量;
b. 格式:final 数据类型 变量名 = 初始化值 final int a = 10;
3.1.2变量
- 定义:在程序运行过程中,其值可以在一定范围内发生变化的量称为变量。变量的本质是内存中的一小块区域。
. 定义分解:
A.一定范围,这里指的是有区域限制即通过数据类型实现对变量的限制;
B.内存中的区域:这里指的是必须给定变量名;
C.其值,必须给定变量初始化值; - 变量的格式: 数据类型
变量名
=初始化值; int a = 10; - 变量使用的注意事项:
A.局部变量在使用前必须给定初始化值;
B.变量只在它所在的代码块和方法声明中有效;
C.同一个大括号内,变量名不能重复;
D:一行上可以定义多个同一类型的变量,但是不建议;e.g. int a = 10 ,b = 20 , c = 30;
3.2 数据类型
- Java是一种强类型语言,针对每一个数据都有其对应的数据类型。
3.2.1 基本数据类型
- 分为4类8种;整数型、浮点型、字符型、布尔型。
- 整数型:
-byte
- short
- int
- long - 浮点型
- float
- double - 字符型:char
- 布尔型:boolean
- 注意事项:
A.整数默认是int类型;
B.浮点数默认是double类型;
C.定义long类型的时候要家L/l,为避免混淆建议使用L。
D.定义float类型的时候监视加F/f,同样建议使用F。 - 基本数据类型占用字节和取值范围
四类 | 八种 | 字节数 | 取值范围 |
---|---|---|---|
整数类型 | byte | 1 | [27 ,27 -1] |
整数类型 | short | 2 | [215 ,215 -1] |
整数类型 | int | 4 | [231 ,231 -1] |
整数类型 | long | 8 | [263 ,263 -1] |
浮点型 | float | 4 | 取值范围比long大,具体取值范围的计算方法后面介绍。 |
浮点型 | douoble | 8 | 取值范围在目前的8种中最大,具体方法后面介绍。 |
字符类型 | char | 2 | 只表示一个字符。 |
布尔类型 | boolean | 1 | 只有两个值,true和false |
- 取值范围的计算方法
//基本数据类型的取值范围计算方式
public class test02 {
public static void main(String[] args) {
System.out.println("byte的取值范围:" + Byte.MIN_VALUE + " " + Byte.MAX_VALUE);
System.out.println("short的取值范围:" + Short.MIN_VALUE + " " + Short.MAX_VALUE);
System.out.println("int的取值范围:" + Integer.MIN_VALUE + " " + Integer.MAX_VALUE);
System.out.println("long的取值范围:" + Long.MIN_VALUE + " " + Long.MAX_VALUE);
System.out.println("Float的取值范围:" + Float.MIN_VALUE + " " + Float.MAX_VALUE);
System.out.println("double的取值范围:" + Double.MIN_VALUE + " " + Double.MAX_VALUE);
}
}
3.2.2 引用数据类型
- 主要有类、接口和数组。
3.23 数据类型转换
- 隐式转换(自动类型提升):
byte,short,char ->int->long->float->double 只要参与运算中有取值范围大的数据类型,则取值范围小的数据类型会自动提升为取值范围大的数据类型然后再参与运算。
byte、short和char类型在参与运算的时候默认提升至int类型然后再参与运算,其计算结果默认只能使用int或者比它范围更大的值接收。如果一个运算中有double类型数据参与运算,结果一定是一个double类型的数据。同理在运算过程中运算结果的数据类型一定是参与运算的变量中取值范围最大的数据类型。 - 强制转换:在不同类型的数据参与运算的时候,想要使用取值范围小的数据类型接收运算结果此时就需要进行强制转换;
A.格式: 目标数据类型 变量名 = (目标数据类型)(被转换数据类型);如果被转换数据类型只是一个参数的时候可以不加括号。
B.特点:不建议进行强制转换强制转换会导致数据的丢失和精确度的损失。
public class test03 {
public static void main(String[] args) {
byte a = 1;
short b = 2;
int c = 3;
long d = 4;
float e = 5;
double f = 6;
char g = 'a';
// 因为byte、short和char只要参与运算,在没有更大范围的数据类型参与的情况下,默认会提升为int数据类型然后再参与运算。所以结果只能使用int数据类型进行接收;
// 或者采用强制转换;
System.out.println(b = (short) (a + b + g));
// byte、short和char参与运算,隐式转换为int类型数据,然后参与运算。
System.out.println(c = a + b + g);
// double类型数据参与运算,结果一定是一个double类型的数据。
System.out.println(f = a + b + c + d + e + f + g);
// 如果想使用取值范围小的数据类型接收取值范围大的数据类型,则必须进行强制类型转换,格式为 目标数据类型 变量名 =
// (目标数据类型)(被转换类型)
// 但是这样,有可能会导致数据丢失,损失精度。
int h = (int) (a + b + c + d + e + f + g);
System.out.println(h);
//强制转换的时候,被转换数据类型只有一个参数的时候,不需要加括号也可以进行强制转换;
byte i = (byte)b;
}
}
3.3 注释、关键字、标识符
3.3.1 注释
- 定义:用于解释说明程序的文字就是注释;注释可以提高代码的可阅读性。
-1.注释的分类:单行注释//;多行注释/* ----- * /;文档注释/** ------* /;
-2.代码示例
public class test02 {
public static void main(String[] args) {
// 这是单行注释,快捷键为ctr + / 取消单行注释快捷键相同。当行注释可以进行嵌套。
// System.out.println("byte的取值范围:" + Byte.MIN_VALUE + " " +
// Byte.MAX_VALUE);
// System.out.println("short的取值范围:" + Short.MIN_VALUE + " " +
// Short.MAX_VALUE);
// 这是多行注释,快捷键为ctr + shift + / ,取消多行注释快捷键为ctr + shift + \ 多行注释不能嵌套。
/*
* System.out.println("int的取值范围:" + Integer.MIN_VALUE + " " +
* Integer.MAX_VALUE); System.out.println("long的取值范围:" + Long.MIN_VALUE
* + " " + Long.MAX_VALUE);
*/
// 这是文档注释。
/**
* System.out.println("Float的取值范围:" + Float.MIN_VALUE + " " +
* Float.MAX_VALUE); System.out.println("double的取值范围:" +
* Double.MIN_VALUE + " " + Double.MAX_VALUE);
*/
}
}
3.3.2关键字
- 定义:在Java中被赋予特殊含义的单词就是关键字;
- 特点:组成关键字的字母全部小写;常见的编译器对关键字有特殊的颜色标记;
3.3.3 标识符
- 定义:给项目、包、类、方法、变量等起名字的符号称为标识符。
- 组成:标识符采用的是unicode字符集,所以可以使用英文大小写字母(A-Z,a-z)、中文字符(不建议使用)、数字、下划线_ 、美元符$等等。
- 命名规则:大驼峰和小驼峰
A.大驼峰
a.每个单词的首字母都需要大写;
b.一般用于给类和接口起名字;
B.小驼峰
a.第一个单词首字母小写,其余单词首字母都需要大写。一般给变量和方法起名字。
C.注意事项
a.给包起名字的时候,域名需要倒写且字母全部小写。例如com.baidu.baike
b.起名字不能以数字开头;
c.起名字不能使用关键字。