学习,偷的半日闲
不是所有的基础内容,只是个人的记录和随想。
1. 计算机
2. Java发展
- javaEE(企业)
- ME(手机,淘汰)
- SE(基础)
- JDK (Java开发者工具)
- JRE(Java运行环境)
- JVM(Java虚拟机)
- JDK8(开发时仅仅需要)
3. jdk卸载和安装(一般jdk里面包括jre)
- 安装
- 下载安装包
- 安装jdk和jre
- 设置环境变量和系统变量(JavaHOME path %java_HOMe%bin、 %java_HOMe%/bin/jre)
- 检测(java -version 、javac)
- 卸载
- 卸载jdk目录
- 删除jdk文件
- 清理系统和环境变量
- 检测(java -version 、javac)
具体可以看其他博主,我这里推荐两位:
4.运行机制
高级语言:
编译型 操作(C、C++)
解释型 网页(速度)
Java拥有两者的特点
源程序(*.java)–> Java编译器 –>字节码文件(*.class)–>类装载器–>字节码校验器–>解释器–>操作系统平台(JVM)
5. 注释和标识符、关键字
1 | //单行注释 |
6. 方法
- 重载:方法重载(同名不同形参)
- 重写(Override):重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。
- 结构:修饰符 返回值 方法名(形参1,形参2){
} - 若没有集成开发环境,要在src文件夹运行,命令行运行时要加上包名。
- JDK1.5才有可变参数(不定项参数),同类型、一个方法只能一个可变参数,Sum(double… number),必须是最后一个参数。
- 递归思想(不是最优)递归头 、递归体
- 方法调用:静态方法与类一起加载
7. 内存
- 堆
存放new的对象和数组
可以被所有的线程共享,不会存放别的对象引用
- 栈
存放基本变量类型(会包含这种基本类型的具体数值)
引用对象的变量(会存放这个引用在堆里面具体地址)
- 方法区
可以被所有的线程共享
包含了所有的class和static类
8. 数组
1 | //数组的声明 |
9. 冒泡排序
- 相互比较相邻,每次比较减少一次
- 时间复杂度O(n2)
10. 数据类型
基本数据类型
- 整数型 byte\short\int\long
1byte=8bit
二进制:0b
八进制:0
十六进制:0X- 浮点型 float(单)\double(双)
float无限接近但不等于
1
2//数字类型可以用下划线分割
int a = 1_000 ;- 字符型 char
默认值:u00000
- 布尔型 boolean
默认值:false
不能对布尔类型强制类型转换,可能会有溢出或者精度引用数据类型(除了基本数据类型,其他默认值都为null)
- 数组
- 字符串
- 对象数组
11. 变量作用域
- 局部变量
写在方法内,必须初始化
- 全局变量
- 实例变量
类里面,方法外面
12. 运算符
- 算数运算符(+-*/%)
- 关系运算符(++ – = > < )
- 逻辑运算符(&& & || | !):短路运算
- 赋值运算符(=)
- 位运算符(&为两1为1 |为两0为0 ~取反,同1异0,>> 二进制/ ,<< 二进制*)
- 扩展符:+字符串连接符,三目运算符?:
13. 输入输出
凡是属于IO流都要关掉
输入:
1
2
3Scanner.close();
Scanner.next();//不能得到空格
Scanner.nextLine();//以回车符为结束符switch(i)jdk7可以为字符串
反编译
.class–>.java//用来看源码
14. 面向对象
方法
异常抛出throws方法的调用(递归)
static 和类一起加载值传递和引用传递
值传递:只是把值传给形参,
引用传递:对象,本质还是值传递面向对象本质:以类的方式组织代码,以对象来组织封装数据
javaME Android
2006 Hadoop
值传递、引用传递
构造函数:类名相同,没有返回值,注意:一旦定义有参构造,必须显示定义无参构造,
new 关键字本质在调用构造器
初始化对象的值
15. 抽象(abstract )
非非,抽象方法只能在抽象类中,非抽象类只能有非抽象方法,不能有抽象方法
抽象类(里面的方法必须全部实现,不想全部实现,一般加一个适配模式)
不能被 new
抽象方法(只能靠子类帮我们实现)
接口(制定的规则)架构师
方法默认有public abstract
属性是常量public static final
接口不能被实例化,没有构造方法
16. 封装
高内聚,低耦合
属性私有化get、set
17. 继承与多态
java单继承,多实现
public protected default private (不可继承)
所有类都是直接或间接继承Object类
super()调用父类的构造方法,必须在子类构造方法的第一个,不能和this同时调用构造方法。
比较 | 对象 | 前提 | 构造方法 |
---|---|---|---|
this: | 本身 | 没继承可以使用 | 本类构造 |
super(): | 父类 | 只能继承条件下 | 父类构造 |
方法重写:(和属性无关,需要有继承关系,修饰符范围可以扩大,抛出的异常可以被缩小)
静态和非静态方法区别很大,
方法多态(和属性无关,父类和子类有联系,重写和继承,父类的引用可以指向子类)
对象执行 的方法看左边的类,
static 方法属于类,不属于实例,
final:常量
private 方法不能继承,没有多态
A instanceof B 判断引用类型
父类引用指向子类的对象
子类转换为父类:向上转型
父类转换为子类:向下转型:强制转换
static:
静态导入包
静态变量:多线程
静态方法(静静)
final 不能继承
18. 内部类
- 成员内部类:类中定义一个类
- 静态内部类:类中定义一个静态类
- 局部内部类:方法定义一个类
- 匿名内部类:实现接口的类前面写一个类
19. 异常
- 异常,检查,运行,错误,通过JVM线程结束
- 捕获
1 | try { |
- throw主动抛出异常,通常在方法中,throws一般在方法上
- 自定义异常:继承Exception
20. 总结
不是全部的Java基础,欢迎大家进行总结。