Table of Contents
bin 该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。
conf 该路径下存放了JDK的相关配置文件。
include 该路径下存放了一些平台特定的头文件。
jmods 该路径下存放了JDK的各种模块。
legal 该路径下存放了JDK各模块的授权文档。
lib 该路径下存放了JDK工具的一些补充JAR包。
计算机存储单位
- 我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)” ,我们又称之为“比特位”,通常用小写的字母”b”表示。而计算机中最小的存储单元叫“字节(byte)”, 通常用大写字母”B”表示,字节是由连续的8个位组成。 除了字节外还有一些常用的存储单位,
- 大家比较熟悉,我们一起来看看: 1B(字节)=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB
Java算数运算符
- 运算符和表达式
- 运算符:运算的符号
- 表达式:表达一个操作
- 算术运算符
- 加 减 乘 除 取于
- 字符(加 +)
- 不同数据类型做加法,会做变量提升
- byte,short,char --> int --> long --> float --> double
- 一般不使用byte,short定义整数,不适用char定义字符
赋值运算符(应用)
- = 赋值 a=10,将10赋值给变量a
- += 加后赋值 a+=b,将a+b的值给a
- -= 减后赋值 a-=b,将a-b的值给a
- *= 乘后赋值 a*=b,将a×b的值给a
- /= 除后赋值 a/=b,将a÷b的商给a
- %= 取余后赋值 a%=b,将a÷b的余数给a
自增自减运算符(理解)
- 单独使用 放前放后都一样
- 参与运算 ++a 先自增 a++ 先运算
关系运算符(应用)关系运算都是bool类型
- ==
- a==b,判断a和b的值是否相等,成立为true,不成立为false
- !=
- a!=b,判断a和b的值是否不相等,成立为true,不成立为false
- >
- a>b,判断a是否大于b,成立为true,不成立为false
- =
- a>=b,判断a是否大于等于b,成立为true,不成立为false
- <
- a<b,判断a是否小于b,成立为true,不成立为false
- <=
- a<=b,判断a是否小于等于b,成立为true,不成立为false
逻辑运算符(应用)
- & 逻辑与
- a&b,a和b都是true,结果为true,否则为false
- | 逻辑或
- a|b,a和b都是false,结果为false,否则为true
- ^ 逻辑异或
- a^b,a和b结果不同为true,相同为false
- ! 逻辑非
- !a,结果和a的结果正好相反
短路逻辑运算符
- 短路逻辑就是满足条件之后,后面的就不参与运算了
- && 短路与 作用和&相同,但是有短路效果
- || 短路或 作用和|相同,但是有短路效果
三元运算符(理解)
- 关系表达式 ? 表达式1 : 表达式2;
流程控制语句(应用)
- if结构
- if(){}else if(){} else{}
- 关键字 if ,esle if
- switch结构
- switch(表达式){ case 1:break; case2:break;}
- 关键字:switch,case,default,break
for循环结构(掌握)
- 格式:
-
for (初始化语句;条件判断语句;条件控制语句) { 循环体语句; }
- 初始化语句,和条件判断语句,都可以有多个,逗号分隔
- 条件判断语句,也可以有多个,需要&或|连接
-
while循环
- 格式
-
初始化语句; while (条件判断语句) { 循环体语句; 条件控制语句; } // 先执行一遍,不常用 初始化语句; do { 循环体语句; 条件控制语句; }while(条件判断语句);
-
跳转控制语句(掌握)
- 跳转控制语句(break)
- 跳出循环,结束循环
- 跳转控制语句(continue)
- 跳过本次循环,继续下次循环
- 注意: continue只能在循环中进行使用!
数组
- 长度固定,数据类型一致
- 定义方式:数据类型[] 数组名 && 数据类型 数组名[]
- 数组动态初始化【应用】
- 数据类型[] 数组名 = new 数据类型[数组长度];
- 数组经常出现的问题
- 下标越界
- 空指针异常
java中的内存分配
- 寄存器 给CPU使用,和我们开发无关。
- 本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。
- 方法区 存储可以运行的class文件。
- 堆内存 存储对象或者数组,new来创建的,都存储在堆内存。
- 方法栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
数组静态初始化
- 完整版格式
- 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
- 简化版格式
- 数据类型[] 数组名 = {元素1,元素2,...};
方法的概念(理解)
- 将一些代码拆分,写到一起,封装使用
- 方法需要定义,需要调用,才可以执行使用
Java类和对象
-
类和对象的理解
- 类的理解:模板,例如人
- 共同事物抽象
- 类是数据类型,相同属性和行为的一组对象的集合
- 对象的理解:实例,张三李四王五,都是根据人
- 属性:事物的特征
- 行为:对事物执行操作
- 类和对象的关系
- 类:对事物的抽象
- 对象:类的具体化
- 类(类(成员)变量,方法(局部)变量,属性,行为)
- 属性:类方法外定义的变量(类下定义的变量)
- 行为:类中定义的方法
- 成员变量
- 类的理解:模板,例如人
-
类的应用
- 定义属性,定义行为
- 对象使用 new 对象();
-
类在内存中存放
- 1.类方法单独存在栈(多个对象共用一个类方法定义)
- 2.对象的属性,变量存在堆(每个对象都有自己的属性)
-
成员变量和局部变量的区别
- 类中的位置不同:
- 成员变量 类方法外定义
- 局部变量 类方法内定义
- 内存中的位置不同
- 成员变量 堆内存
- 局部变量 栈内存
- 声明周期不同:
- 成员变量:依赖类的存在
- 局部变量:依赖类方法的存在
- 初始化值不同
- 成员变量有默认初始化值
- 局部变量没有默认初始化值
- 类中的位置不同:
-
private关键字
- private是一个修饰符,可以用来修饰成员(成员变量,成员方法)
- 被private修饰的成员,只能在本类进行访问
- 可以使用getxx(),setxx(参数) 设置返回private方法
-
this关键字
- this修饰的变量用于指代成员变量,其主要作用是(区分局部变量和成员变量的重名问题)
- this代表当前对象
-
封装思想
- 将一些信息隐藏在类的内部,通过方法提供访问
- 提高代码的安全性,可以复用代码
-
构造方法
- 构造方法是一种特殊的方法
- 注意:
- 如果类没有定义构造方法,将使用默认无参的构造方法
- 如果要使用构造方法和有参构造方法,就用到了函数重载
- 带参数的构造方法,可以为类提供初始化操作
-
Java常用API
-
String类
- 创建String字符串
- 使用new 创建一个字符串
- 对象创建的字符串,地址不一样
- 使用“” 双引号创建一个字符串
- 字符串在常量池中,内容一样,地址就一样
- ”“ 双引号创建的,内容一样 ,地址就一样
- 使用new 创建一个字符串
- String构造方法
- String()
- String(char[]) String(byte[])
- String = “abc”;
- String理解
- String类代表字符串,底层其实是char数组,“” 双引号内的都是字符串
- String 类在 java.lang 包下
- “” 装箱机制,所以可以调用方法
- String特点
- 字符串不可改变,值一旦创建就不能更改
- 字符串的值可以被共享
- 字符串效果相当于char[] 底层实现是 btye[]
- ==
- 基本类型: 比较数据值是否相同
- 引用类型: 比较地址值是否相投
- equals
- 引用类型比较值是否相等
- 创建String字符串
-
StringBuilder类
- StringBuilder和String的区别
- Sting不可变
- StringBuilder 是一个可变的字符串类
- StringBuilder 对象中的内容是可变的
- 构造方法
- StringBuilder()
- StringBuilder(string)
- 常用方法
- append(任意类型)
- reverse() 翻转字符串
- StringBuilder和String互相转换
- StringBuilder 使用toString() 转换为String
- String 使用 new StringBuilder(String) 转换为StringBuilder
- StringBuilder和String的区别
-
-
ArrayList
- ArrayList简介
- 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
- ArrayList集合的特点
- 底层是数组实现的,长度可以变化
- 泛型的使用
- 用于约束集合中存储元素的数据类型
- ArrayList简介
2.扩展延伸知识
-
java终端数据输入(应用)
- import java.util.Scanner;
- Scanner sc = new Scanner(System.in);// 创建Scanner对象,sc表示变量名,其他均不可变
- int i = sc.nextInt(); // 表示将键盘录入的值作为int数返回。
-
Random产生随机数(掌握)
- 使用步骤:
- 导入包
import java.util.Random;
- 创建对象
Random r = new Random();
- 产生随机数
int num = r.nextInt(10);
解释: 10代表的是一个范围,如果括号写10,产生的随机数就是0-9
-
Java为什么要有静态和非静态之分
- 站在“bai面向对象”的角度,static,也就是你说的静态,是du为了保zhi持共性,大家伙都用一个,而非静态就是dao为了保持个性,这个个性需要使用实例来完成。例如
3.灵感代办
4.复习内容
5.学习成果&问题
java终端数据输入(应用)
- import java.util.Scanner;
- Scanner sc = new Scanner(System.in);// 创建Scanner对象,sc表示变量名,其他均不可变
- int i = sc.nextInt(); // 表示将键盘录入的值作为int数返回。
Random产生随机数(掌握)
- 使用步骤:
- 导入包
import java.util.Random; - 创建对象
Random r = new Random(); - 产生随机数
int num = r.nextInt(10);
解释: 10代表的是一个范围,如果括号写10,产生的随机数就是0-9
- 导入包
Java为什么要有静态和非静态之分
- 站在“bai面向对象”的角度,static,也就是你说的静态,是du为了保zhi持共性,大家伙都用一个,而非静态就是dao为了保持个性,这个个性需要使用实例来完成。例如
4.复习内容
5.学习成果&问题