数组
数据类型[] 数组名称 = new 数据类型[数组长度]; 默认值为0
求长度:数组名称.length
访问越界,抛出异常(ArrayIndexOfBoundsException)
数组遍历:增强循环for-each(只读不改)
for(数据类型 临时变量名称 : 数组名称){sout(临时变量名称);}
数组转字符串:String str = Arrays.toString(数组名称)
数组拷贝:数据类型[] 数组名称 = Arrays.copyOf(原数组名,新数组长度)
补充:
数组工具类:Arrays
集合工具类:Collections
线程池工具类:Executors
栈:存放方法调用时产生的临时变量(方法调用结束销毁)
堆:使用new创建的对象都在堆上保存(程序退出销毁)
引用数据类型默认值为NULL。使用值为NULL的引用访问任何数据值时,抛出NPE异常(NullPointerException)
二维数组
数据类型[][] 数组名称 = new 数据类型[行数][列数];
行数:数组名称.length
列数:数组名称[i].length
面向对象:所有功能/业务都是在找对象用对象
实现比较复杂,程序结构比较复杂(都是类与类之间的关系),
用户使用较为简单,可扩展性强。
面向过程:没有对象的概念,就是一系列的函数之间的调用来组织程序结构
实现简单,用户使用成本高,可扩展性弱
类
class 类名称{
一系列属性;//成员变量,实例变量,字段(属性)
//public String name;
一系列方法;//成员方法,实例方法
//public void DoClass() { }
}
·类名大驼峰
·成员前写法统一为public
·此处方法不带static关键字
public class 类名 为主类,存放main方法,类名与文件名相同
类的实例化(用类类型创建对象)
类名称 对象引用名称 = new 类名称(参数);
·使用.来访问对象中的属性和方法
构造方法(快捷键:alt+insert)
名称与类名称相同,在创建对象时,由编译器自动调用,在对象整个生命周期只调用一次
构造方法没有返回值的类型声明 //public Dog() { } 或 Dog() { }
作用:在产生对象时,为对象的所有成员属性做初始化操作
构造方法重载
无参构造成员变量为默认值;
有参构造成员变量外部传入。
this关键字
从类中寻找同名变量 //this.成员名称
this修饰构造方法 //this(参数)
·只能在构造方法中使用,不能在成员方法中使用,且要写在首行
static(语句体对象无关)
修饰属性,该属性为静态变量,直接通过类名称来调用,存储在JVM方法区,所有该类对象共享
·只存在于类中,方法中不能定义静态变量
·静态属性直接通过类名访问,没有对象时也存在
·不可以修饰类,但可以修饰内部类
·静态域中不能出现this关键字
常见工具方法:Arrays.sort(int[] arr);
Math.max(int a,int b);
代码快
1.普通代码块:定义在方法中,直接使用{}括起来的代码块
2.构造代码块:定义在类的内部,不加任何修饰符的代码块
构造块优先于构造方法执行,有几个对象产生,就执行几次构造代码块,一般用在构造方法之前进行某些属性默认值的初始化操作或检查某些类是否被加载。可以有多个,按顺序编译,合并在构造方法中的最前面。
3.静态代码快:定义在类中,使用关键字static修饰的代码块
无论产生多少对象,只在类加载时执行一次。优先于构造块和构造方法。若当前类中存在主方法,静态块还会优先于主方法执行。可以有多个,编译后合并成一个大的静态块。
(类加载:第一次“使用”某些类时,JVM就会将该类加载到内存中。)
面向对象开发的三大特性:封装,继承,多态
封装:可见范围的问题,体现易用性与保护性
作用:易用性,保护性
private关键字:属实现属性的封装,只在当前类的内部可见。
当属性被private封装之后,在类的外部想要使用这些属性,必须通过类对外提供的方法来使用。
getter:在类的外部获取某些private值(快捷键:alt+insert(Getter))
setter:在类的外部设置某些private值(快捷键:alt+insert(Setter))
若没有写setter方法,则加final。//private final int x;
public/screen当前项目都可见
java中的访问修饰权限:
private(当前类中可见)<default(包访问权限,不写默认是包权限)<protected(继承访问权限)<public(当前项目内部都可见)
包:
导入:
import 包名(java.util).类名(Date);
通配符:import 包名(java.util).*;
静态导入:import static 包名.类名.*; //方法调用时,直接调用(例如:max(1,2);) 了解即可
定义:源文件首行用package定义
访问权限:访问权限修饰符啥也不写,默认就是包访问权限,只在同级目录可见。
JDK中常用的包:
java.lang:系统常用基础类都在这个包中(String,Object,Math)
java.util:java提供的工具类,整个Java的几何框架都在此包中(ArrayList HashMap)
java.sql:数据库开发包,JDBC所有类都在此包中
java.net:网络编程开发包,Socket编程相关类都在此包中
java.io:I/O开发包
继承:
概念:共性抽取,代码复用
机制:面向对象第二大特征
语法:访问修饰符 class 子类名称 extends 父类名称{//子类代码}
原则:父类静态代码块>子类静态代码块>主方法>父类构造代码块>父类构造方法>子类构造代码块>子类构造方法
局限性:不允许多重继承,但允许多层继承
显示继承:正常继承
隐式继承:父类中的私有域,子类中不能直接使用,需要通过提供的方法来使用
super关键字:
修饰属性,表示直接从父类中寻找同名变量
super调用父类构造方法:
语法:super(父类参数);
若父类中不存在无参构造,则super(参数)必须写在子类构造方法首行,子类中不存在子类构造方法之间的互相调用
super修饰普通方法:
语法:super.方法名称(参数);
直接从父类中调用同名方法