标题图
前言
一些知识点忘了没, 可以通过一个点引出什么内容呢? 做出自己的思维导图, 看看自己到了哪一步了呢
内容
如果有人问 jre,jdk,jvm 是什么, 你怎么回答呢?
jre 的英文是 java runtime environment , 包含有 java 虚拟机, 库函数, java 运行应用程序和 applet 的要的文件. java 运行环境功能主要有加载代码, 校验代码, 执行代码. jre 是 java 运行时环境, 有 jvm 和其他一些 java 核心 API, 只要有 jre 就可以运行 java 程序. jre 含 jvm, 运行 java 程序需要 jre
jdk 的英文是 java development kit 包含 jre, 编译器和调式器等. jdk 是 jre 的超集. 要进行开发 java 程序需要安装 jdk.
jvm 是一种规范, 是一个虚拟的用于执行字节码的计算机. jvm 是负责 java 字节码解释运行的, jvm 实现了跨平台, 可移植的功能.
一次编译, 随处运行
源程序 (.java 文件)->java 编译器 -> 字节码(.class 文件)
jre,java 运行环境, 类装载器, 字节码校验器, 解释器.
什么是变量?
变量是用来操作存储空间中的数据的, 是代指存储空间, 位置一定, 存储空间中的数据类型不确定, 就有了数据类型, 放置的值也不确定. 类型可以是基本类型, 也可以是引用类型.
变量: 局部变量(方法或语句块内部定义的变量), 实例变量(方法外部, 类的内部定义的变量), 静态变量(使用 static).
那么讲了 java 的变量, 那么讲究数据类型, 在 java 中, 数据类型分为两大类, 一为基本数据类型, 二位引用数据类型.
数据类型的定义了 8 种基本数据类型, 我们可以分为 3 类来了解, 一种为逻辑类型, 一种的文本类型, 一种是数值类型:
逻辑类型记住是 boolean 就行, 文本类型记住是 char 类型就行, 而数值类型记住顺序一下子就可以记住, byte,short,int,long,foloat,double, 从小到大的顺序.
类型类型分基本数据类型和引用数据类型
基本数据类型分, 数值型, 字符型, 布尔型.
数值型分, 整数类型和浮点类型. 那么整数类型有 byte,short,int,long, 浮点类型有 float,double.
float 为单精度类型, double 为双精度类型.
字符型的有 char. 布尔型的有 boolean.
boolean 类型有两个值为 true 和 false. 用来判断逻辑条件的, 一般用于程序流程控制.
字符型, 单引号用来表示字符类型的常量,'a'为一个字符. char 类型可以在 unicode 编码表中的 字符. char 可以用来整数运算.
引用数据类型分, 类 class, 接口 interface, 数组
注意: 引用类型指的就是对象的地址
类型 | 占用存储空间 | 表数范围 |
---|---|---|
byte | 1 字节 | -128 到 127 |
short | 2 字节 | -215 到 214 |
int | 4 字节 | 略 |
long | 8 字节 | 略 |
float | 4 字节 | 略 |
double | 8 字节 | 略 |
进制数
十进制整数, 八进制整数(以 0 开头), 十六进制数(以 0x 或 0X 开头).
字符集
iso8859-1->big5,gb2312,unicode gb2312->gbk
方法: 定义类和对象的动态行为特征的抽象
运算符
算术运算符: +,-,*,/,%, +,--
关系运算符:>,<,>=,<=,==,!= instanceof
逻辑运算符: &&,||,!
位运算符: &,|,^,~ ,>>,<<,>>>
面向对象和面向过程
面向过程的思维模式是比较简单的线性思维.
面向对象的思维模式适合处理复杂的问题.
构造器用于构造类的实例.
构造器的作用就是初始化一些数据.
static
用 static 声明的成员变量为静态成员变量, 用 static 声明的方法为静态方法.
内存
栈: 局部变量放在栈中, 栈是一种连续的内存空间, 由系统分配.
堆: 通过 new 的对象都在, 是不连续的内存空间, 速度慢.
方法区: 用来存放程序中不变和唯一的内容, 方法区也是堆, 用于存放类的代码信息, static 变量, 和常量池.
- // 常量池
- public class Student {
- String name;
- int age;
- public void study(){
- System.out.println("学习");
- }
- public void sayHello(String sname){
- System.out.println("大帅哥");
- }
- }
- public class Test{
- public static void main(String[] args){
- // 类加载器 Class Loader
- // 堆中创建一个 student 对象
- Student s1 = new Student();
- // 创建字符串常量, 放入常量池中
- s1.name = "大帅哥";
- // 通过 s1 找到 student 对象
- s1.study();
- }
- }
小结
栈自动分配连续的内存空间, 后进先出, 放入的都是局部变量, 堆是不连续的内存空间, 不像栈按照子弹夹一样, 方法区也是堆, 里面存放的都是类的代码信息, static 变量和常量池.
抽象方法
抽象方法用 abstract 修饰, 没有方法体, 需要用子类来重写
记住: 抽象类不能进行实例化, 抽象类可以有属性, 方法和构造方法, 但构造方法不能用 new 实例, 需要用来被子类调用的. 抽象类是用来被继承的, 抽象方法必须由子类实现.
定义接口:
格式:
public 或默认 interface 接口名 extends (接口可以多)
{
public static final 常量
public abstract 方法
}
内部类
一个类放在另一个类的内部定义为内部类.
内部类用来干嘛的?
提供更好的封装, 让外部类直接进行访问, 内部类可以访问外部类的私有属性. 而外部类不能访问内部类的内部属性.
内部类分: 匿名内部类, 成员内部类, 非静态内部类
非静态内部类可以使用外部类的成员, 而外部类不能访问非静态内部类的成员
静态成员不能访问非静态成员
- new InnerClass()
- Outer.inner name = OuterObject.new Inner()
this. 变量名
外部类名. this. 变量名
访问修饰符:
private 在同一个类中
default 在同一个类中, 在同一个包中
protected 在同一个类中, 在同一个包中, 在子类中
public 公共都可以
多态
指不同类的对象对同一件事情进行不同的效果反应
- abstract class Student{
- public abstract void study();
- }
- // 1
- class Student1 extends Student {
- @Override
- public void study(){
- System.out.println("学习 1");
- }
- }
- class Student2 extends Student {
- @Override
- public void study(){
- System.out.println("学习 2");
- }
- }
多态的特点:
继承, 有方法的重写, 父类引用指向子类对象引用
基本数据类型的包装类
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
StringBuilder 与 StringBuffer 区别
StringBuilder 可变字符串, 线程不太安全, 效率高
StringBuffer 可变字符串, 线程安全, 效率低
String 不可变字符串, final 修饰了 string 类, 所以不能被继承, 修饰了 char value[], 所以字符串的值不可以改变, 记住 final 没有修饰 string 的引用, 就会存在内存空间的浪费.
- string
- String name = "大哥";
io 流
io 流的分类为输入流和输出流
按数据分
字节流是按照二进制, 字符流是按照文本文件.
字节流:
输入流 InputStream
- read(byte[] b)
- read(byte[] b, int off, int len)
- FileInputStream()
- InputStream FileInputStream
输出流: OutputStream
- write(byte[] b)
- write(byte[] b, int off, int len)
- FileOutputStream
- OutputStream FileOutputStream
字符流
输入流 Reader
- read(char[] c)
- read(char[] c, int off, int len)
- FileReader()
- Reader FileReader
输出流 Writer
- write(char[] c)
- write(char[] c, int off, int len)
- FileWriter()
- Writer FileWriter
处理流
缓冲流
字节缓冲流
- BufferedInputStream
- BufferedOutputStream
字符缓冲流
- BufferedReader
- BufferedWriter
输入流: InputStream
输出流: OutputStream
字节流搞定一切
- BufferedInputStream -> FileInputStream -> File
- BufferedOutputStream -> FileOutputStream -> File
通过解码
- InputStreamReader
- OutputStreamWriter
通过解码变字符流, 只能处理纯文本
- BufferedReader -> FileReader -> File
- BufferedWriter -> FileWriter -> File
- Reader Writer
线程
- Thread
- sleep()
- yield()
- stop()
- start()
- interrpet()
- ...
结言
一些你需要重新复习的一些基础内容, 写出自己的思维导图看看哦!
达叔小生: 往后余生, 唯独有你
You and me, we are family !
90 后帅气小伙, 良好的开发习惯; 独立思考的能力; 主动并且善于沟通
简书博客: 达叔小生
https://www.jianshu.com/u/c785ece603d1
结语
下面我将继续对 其他知识 深入讲解 , 有兴趣可以继续关注
小礼物走一走 or 点赞
来源: http://www.jianshu.com/p/94c69f9dd63e