第一章 Java概述
-
1995年美国Sun推出Java,2009年Sun公司被甲骨文收购
-
Java之父:詹姆斯·高斯林(James Gosling)
-
Java编译器将源程序编译成与平台无关的字节码文件(class文件),然后由JVM对字节码文件解释执行。不同操作系统,只需要安装不同的Java虚拟机就可实现Java程序的跨平台
-
JRE(Java运行环境,用于运行JAVA程序),包含JVM和Java的核心类(Java API)
JDK(Java开发工具包,用来开发JAVA程序),包含JRE和一些Java开发工具包;JDK有三个版本:JAVA SE(标准版,适用于普通应用程序的开发),JAVA EE(企业版,适用于大型企业级应用程序的开发), JAVA ME(微型版,适用于移动设备或嵌套式设备的程序开发)
5. JDK的安装目录介绍
目录名称 | 说明 |
---|---|
bin | 该路径下存放了JDK的各种工具命令。javac和java就放在这个目录(可执行文件) |
conf | 该路径下存放了JDK的相关配置文件 |
include | 该路径下存放了一些平台特定的头文件 |
jmods | 该路径下存放了JDK的各种模块 |
legal | 该路径下存放了JDK各模块的授权文档 |
lib | 该路径下存放了JDK工具的一些补充JAR包(java的类库文件) |
jre | 存放java运行环境文件 |
6. 基础DOS命令
操作 | 说明 |
---|---|
盘符名称: | 盘符切换,如:E:回车,表示切换到E盘。 |
dir | 查看当前路径下的内容 |
cd 目录 | 进入单级目录。cd itheima |
cd … | 回退到上一级目录 |
cd 目录1\目录2… | 进入多级目录。cd itheima\JavaSE |
cd \ | 回退到盘符目录。 |
cls | 清屏 |
exit | 退出命令提示符窗口 |
第二章 你好,世界
1. 为什么配置环境变量
开发Java程序,需要使用JDK提供的开发工具(比如javac.exe、java.exe等命令),而这些工具在JDK的安装目录的bin目录下,如果不配置环境变量,那么这些命令只可以在该目录下执行。我们不可能把所有的java文件都放到JDK的bin目录下,所以配置环境变量的作用就是可以使bin目录下的java相关命令可以在任意目录下使用。
2. 创建环境变量步骤
新建系统变量JAVA_HOME:C:\Program Files\Java\jdk1.8.0
新建系统变量Path的值:%JAVA_HOME%\lib (注意:点号表示当前目录,不能省略)
3. Java程序开发运行流程
JAVA源程序 ===编译===> Java 字节码文件 ===执行===> Java虚拟机(JVM) ======> 各系统(Windows,Linux等)
4. HelloWorld的编写
4.1 记事本打开新建HelloWorld.java文件,内容如下:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
4.2 找到文件所在的文件夹,在地址栏中输入cmd ,编译执行
javac HelloWorld.java
//运行成功,会生成字节码文件HelloWorld.class
java HelloWorld
如图:
5. HelloWorld案例常见问题
- 非法字符问题。Java中的符号都是英文格式的
- 大小写问题。Java语言对大小写敏感(区分大小写)
- 在系统中显示文件的扩展名,避免出现HelloWorld.java.txt文件
- 编译命令后的java文件名需要带文件后缀.java
- 运行命令后的class文件名(类名)不带文件后缀.class
第三章 Java基础语法
1. 注释
1.1 单行注释
单行注释的格式是使用//,从//开始至本行结尾的文字
将作为注释文字
// 单行注释
1.2 多行注释
多行注释的格式是使用/* 和 */
将一段较长的注释包裹起来
/*
多行注释
多行注释
多行注释
*/
1.3 文档注释
文档注释以/** 开始,以**/结束
/**这是文档注释文字**/
2. Java中标识符的组成规则
只能由字母、数字、下划线“_”、美元符号“$”组成,标识符只能是以大小写字母、下划线、$ 作为开头
不能使用java中的关键字作为标识符。
标识符对大小写敏感(区分大小写)
3. 标识符与关键字的命名约定
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式
类名:每个单词首字母大写;如DO,MarcoPolo
变量名:除首单词外的所有单词首字母大写,如:localValue
常量:常量命名全部大写,单词间用下划线隔开,如:MAX_STOCK_COUNT
关键字:字母全部小写
- 常量在程序运行过程中,其值不可以发生改变的量
- 标量在程序运行过程中,其值可以发生改变的量
数据类型 变量名 = 初始值;//声明变量并赋值
int age = 18;
数据类型 变量名;
变量名 = 初始值; //声明变量并赋值
int age;
age=18;
- 可以在一行中定义多个同一类型的变量,但不建议这样使用
int a =10,b=20;
7. 变量使用注意事项
1. 在同一对花括号中,变量名不能重复
2. 变量在使用之前,必须初始化(赋值)
3. 定义long类型的变量时,需要在整数的后面加L(大小写均可,建议大写)。因为整数默认是int类型,整数太大可能超出int范围
4. 定义float类型的变量时,需要在小数的后面加F(大小写均可,建议大写)。因为浮点数的默认类型是double, double的取值范围是大于float的,类型不兼容
8. Java中的基本数据类型
关键字 | 内存占用 | 取值范围 |
---|---|---|
byte | 1字节 | -128~127 |
short | 2字节 | -32768~32767 |
int | 4字节 | -(2的31次方)~2的31次方-1 |
long | 8字节 | -(2的63次方)~2的63次方-1 |
float | 4字节 | 1.401298e-45 ~ 3.402823e+38 |
double | 8字节 | 4.9000000e-324 ~ 1.797693e+308 |
char | 2字节 | 0-65535 |
boolean | 1字节 | true,false |
注:
1. e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方
2. 在java中整数默认是int类型,浮点数默认是double类型
3. 字符串类型String不属于java的基本数据类型,是引用数据类型
4. 引用数据类型:在Java中,引用数据类型指向一个对象,该对象的类型就是引用数据类型,对象、数组都是引用数据类型,简单理解类就是引用数据类型
9. 类型转换
数据范围小的数值或变量赋值给数据范围大的变量。这种转换是自动的(自动转换)
double a = 1;
System.out.println(a);
数据范围大的数值或变量赋值给数据范围小的变量。这种转换需要强制转换格式(强制转换)
强制类型转换格式:目标数据类型 变量名 = (目标数据类型)值或者变量
double a = (double)1;
System.out.println(a);
注:
1. char类型的数据转换为int类型是按照码表中对应的int值进行计算的。比如在ASCII码表中,'a'对应97
2. 整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型
3. boolean类型不能与其他基本数据类型相互转换
第四章 Java运算符
1. 算术运算符
通常的简单的数值计算
public static void main(String[] args) {
int a = 10;
System.out.println(a+++1);//11
System.out.println(++a+1);//13
}
2. 关系运算符
用于大小等关系比较的运算符为关系运算符,一般比较的结果为布尔类型
3. 赋值运算符
运算结果赋值给一个新的变量
4. 逻辑运算符
把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否
成立
5. 短路逻辑运算符
6. 三元运算符
格式:关系表达式 ? 表达式1 : 表达式2
public static void main(String[] args) {
int a = 10;
System.out.println(a==1?11:22);//22
}
第五章 Java条件语句
1. if条件判断语句
if语句用于条件判断,所以括号内为判定条件,结果应为布尔类型
public static void main(String[] args) {
int a = 10;
if(a == 10){
System.out.println(a);//10
}
}
2. if…else语句
if…else 语句用于条件判断,当if判定为false的时候,会执行else中的内容
public static void main(String[] args) {
int a = 11;
if(a == 10){
System.out.println(a);
}else {
System.out.println("a:"+a);//a:11
}
}
3. if…else if…多条件判断语句
符合if中的条件就执行if大括号中的代码,否则是否满足else if中的条件,是就执行大括号中的代码,否则就执行else中的条件,由于过多的使用if else if会影响代码的阅读等,所以不建议使用超过4层
public static void main(String[] args) {
int a = 1;
if(a == 20){
System.out.println(a);
}else if(a == 15){
System.out.println("a:"+a);
} else if (a == 10) {
System.out.println("a1: "+a);
} else if (a == 5) {
System.out.println("a2: "+a);
}else {
System.out.println("a3: "+a);//a3: 1
}
}
4. switch case语句
switch case 语句判断一个变量与一系列值中某个值是否相等,而每个值称为一个分支
public static void main(String[] args) {
int a = 1;
switch (a) {
case 5:
System.out.println("要放假了!!");
break;
case 6:
System.out.println("放假第一天!!");
break;
case 7:
System.out.println("放假最后一天!!");
break;
default:
System.out.println("上班中!!");//上班中!!
break;
}
}
- switch语句中的变量类型可以是:byte、short、int或者char,在Java SE7开始,支持字符串 String类型
- case语句中值的数据类型必须与变量的数据类型相同,而且只能是常量或字面量
- 当变量值与case语句的值相等时,那么就从该case语句开始执行,直到遇见break语句才会跳出
- switch可以包含一个default分支,一般是最后一个分支(可以存在于任何位置),在没有匹配的case语句的时候,会默认执行default分支
第六章 Java循环语句
1. while循环语句
当循环判定为true时,执行循环体,否则跳出(结束)循环
语法结构:
while(布尔表达式){
//循环内容
}
public static void main(String[] args) {
int a = 10;
while (a< 20){
System.out.println(a);
a++;
}
}
结果:打印10~19
2. do…while循环语句
do … while循环和while循环类似;不同的地方是do…while循环会先执行一次在判定;而while会先判定在执行,所以do…while循环至少会执行一次,而while循环可能一次也不会执行
语法结构:
do{
//代码语句
}while(布尔表达式);
public static void main(String[] args){
int x = 10;
do{
System.out.print("value of x : " + x );
x++;
System.out.print("\n");
}while( x < 20 );
}
3. for循环语句
语法结构:
for(初始化值;布尔表达式;值更新){
//循环体代码
}
public static void main(String[] args) {
for (int i=1;i<=100;i++){
System.out.println(i);
}
}
结果:打印1~100
4. 增强型for循环语句
语法结构:
for(声明语句:表达式){
//代码句子
}
public static void main(String[] args) {
int[] nums = {1,2,3,4,5,6,7,8,9};
for (int i:nums){
System.out.println(i);
}
}
结果:打印1~9
第七章 跳转控制语句
1. break关键字
break关键字主要用在循环语句或者 switch 语句中,用来跳出整个语句块
break 跳出最里层的循环,并且继续执行该循环结束后的语句
public static void main(String[] args) {
int[] nums = {1,2,3,4,5,6,7,8,9};
for (int i:nums){
System.out.println(i);
if(i == 5){
break;
}
}
}
结果:打印1~5
如何跳出多重嵌套循环?
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};
flag:
for (int i : nums) {
for (int j = 1; j < 9; j++) {
if (j == i) {
System.out.println("i= " + i + "j= " + j);//i= 1j= 1
break flag;
}
}
}
}
2. continue关键字
continue 适用于任何循环控制结构中。作用是跳过本次循环,继续下一次循环
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int i : nums) {
if(i%3==0){
continue;
}
System.out.print(i+" ");//1 2 4 5 7 8
}
}
第八章 常用类
Scanner
一个可以解析基本类型和字符串的简单文本扫描器。
例如,以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
备注:System.in系统输入指的是通过键盘录入数据。
使用步骤:
//导包
import java.util.Scanner;
//导包的动作必须出现在类定义的上边
//创建对象
Scanner sc = new Scanner(System.in);
代码示例:
//1. 导包
import java.util.Scanner;
public class Demo01_Scanner {
public static void main(String[] args) {
//2. 创建键盘录入数据的对象
Scanner sc = new Scanner(System.in);
//3. 接收数据
System.out.println("请输入一个整数:");
int i = sc.nextInt();
//4. 输出数据
System.out.println("i:"+i);
}
}
Random
Random跟Scanner一样,也是Java提前写好的类,我们不需要关心是如何实现的,只要直接使用就可以了。
使用步骤:
//导包
import java.util.Random;
//导包的动作必须出现在类定义的上边。
//创建对象
Random r = new Random ();
//上面这个格式里面,只有r是变量名,可以变,其他的都不允许变
//生成随机数
int number = r.nextInt(随机数的范围);
上面这个格式里面,只有number是变量名,可以变,其他的都不允许变。
随机数范围的特点:从0开始,不包含指定值。比如:参数为10,生成的范围[0,10)
代码示例:
//1.导包
import java.util.Random;
public class RandomDemo1 {
public static void main(String[] args) {
//2.创建对象
Random r = new Random();
//3.生成随机数
int number = r.nextInt(100);//包左不包右,包头不包尾
//0 ~ 99
System.out.println(number);
}
}
练习题
一、完成一个猜数字大小游戏
设计思路:
1. 程序中自动生成一个1到100之间的随机整数A
2. 玩家循环在控制台中输入1到100之间的任意数B,然后程序会显示以下内容
如果输入数字B 小于 整数A 则控制台中显示【你猜的数字太小了】进行提示
如果输入数字B 大于 整数A 则控制台中显示【你猜的数字太大了】进行提示
如果输入数字B 等于 整数A 则控制台中显示【恭喜你猜对了】进行提示
二、使用循环语句打印出1~100的奇数和与偶数和
太充实了!!!