分割线 — ***
超链接 [] ()
点击我
编译javac java文件,会生成.class文件
java基础语法
标识符和关键字
数据类型
对象与内存分析
类型转化
实例变量
局部变量
在方法内{}定义和使用,必须声明和初始化值
类变量 static
常量
final
变量的命名规范
运算符
Ctrl+d复制当前行到下一行
++、–从顺序加下来谨记!
三元运算符
包机制
java Doc文档
生产java doc文档指令
Java流程控制
scanner
顺序结构,最基本的结构
选择结构
if
if else
if多选结构
嵌套的if结构
switch多选择结构**
JDK7的新特性,表达式结果可以是字符串!!!
while
do while
For循环
快捷键100.for
九九乘法表
增强for循环
break continue
Java的方法
main方法尽量显得更简洁,把封装的代码放到其他地方
实参和形参
方法的重载
参数不一样,名字可以一样
递归
package method;
public class digui {
public static void main(String[] args) {
System.out.println(f(5));
}
public static int f(int n){
if (n==1){
return 1;
}else {
return n*f(n-1);
}
}
}
Java数组
数组的定义
数组下标从0开始
内存分析
数组的四个基本特点
数组的使用
idea控制台输出乱码解决问题
编辑图中文件加上-Dfile.encoding=UTF-8即可
package method;
public class ArrayDemo1 {
public static void main(String[] args) {
int[] arrays = {1, 2, 3, 4, 5};
//打印数组全部元素
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]);
}
System.out.println("-------------");
//计算所有元素的和
int sum = 0;
for (int i = 0; i < arrays.length; i++) {
sum += arrays[i];
}
System.out.println("总和为" + sum);
System.out.println("-------------");
//查找最大的元素
int max = arrays[0];
for (int i = 1; i < arrays.length; i++) {
if (arrays[i]>max){
max=arrays[i];
}
}
System.out.println("max="+max);
}
}
增强for循环
数组反转
多维数组
冒泡排序
//冒泡排序
public void sort(int[] array){
//临时变量
int temp=0;
//外层循环,判断我们这个要走多少次
for (int i = 0; i < array.length-1; i++) {
for (int j = 0; j < array.length-1; j++) {
if (array[j+1]>array[j]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
稀疏数组
面向对象
实例化这个类 new,要么加静态static,才可以调用
实际参数和形式参数类型要对应
构造器
和类名相同,没有返回值
默认创造一个构造方法
与类名相同没有返回值。无参构造方法
封装
private 属性私有,不能直接调用
封装的意义:
- 提供程序安全性,保护数据
- 隐藏代码的实现细节
- 统一接口
- 系统可维护增加了
继承
在java中,所有的类,都默认直接或者间接继承object
this和super的区别
this当前类 (调用当前类的构造器,必须在子类的第一行)
super指的是调用父类构造方法(调用父类的构造器,必须在子类的第一行)
private 私有的东西无法被继承
方法重写
需要有继承关系,子类重写父类发方法
-
方法名必须相同
-
参数列表必须相同
-
修饰符:范围可以扩大: public>protect>default>private
-
抛出的异常:范围,可以被缩小:但是不能扩大:classnotfoundexception --》exception(大)
重写,子类的方法和父类必须一致;方法体不同!
为什么要重写?
-
父类的功能,子类不一定需要或者不一定满足!
idea重写快捷键: Alt+Insert:override;
-
多态
注意事项:
- 多态是方法的多态,属性没有多态
- 父类和子类,有联系 类型转换异常! ClassCastExceptiion!
- 存在条件:继承关系,方法需要重写,父类引用指向子类对象! Father f1=new Son();
- static 方法,属于类,他不属于实例
- final 常量
- private 方法
强制转换
instanceof类型转换
static
普通方法可以调用静态方法但是静态方法只能调用静态方法
只执行一次
抽象类
abstrcat 抽象类
抽象类的所有方法,继承
特点:
- 不能new这个抽象类,只能靠子类趋势线她:约束
- 抽象类中可以写普通方法
- 抽象方法必须在抽象类中
- 抽象类所有的方法,继承了它的子类,都必须要实现它的方法,除非他也是抽象类
接口
作用:
- 约束
- 定义一些方法,让不同的人实现~
- public abstract
- 接口不能被实例化,接口中没有构造方法
- implements可以实现多个接口
- 必须重写接口中的方法
内部类
内部类可以获取外部类的私有属性和私有方法
异常机制
异常体系结构
异常处理机制
idea捕获快捷键:Ctrl+Alt+T 选中需要捕获的异常代码
package oop;
public class text {
public static void main(String[] args) {
// int a = 1;
// int b = 0;
// System.out.println(a/b);
try { //监控区域
int a = 1;
int b = 0;
System.out.println(a/b);
}catch (ArithmeticException e){ //catch(想要捕获的异常类型!) 捕获异常
System.out.println("捕获异常,变量b不能为0");
}finally { //处理善后工作,可以省略,假设io,资源,最后需要关闭
System.out.println("finally!新年快乐");
}
}
}
捕获异常,变量b不能为0
finally!新年快乐
Process finished with exit code 0
自定义异常
常用类
string、stringbuffer和stringbuilder的区别
集合框架list、set、map
IO流
多线程
网络编程
GUI
注解和反射