java笔记
Java方法
01什么是方法
方法是语句的集合,他们在一起执行一个功能。
方法的命名规则 首字母小写驼峰命名
设计方法的原则一个方法只实现一个规则,保持原子性
加了static的方法就能被使用了
02方法的定义和调用
java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段
修饰符 返回值类型 方法名(参数类型 参数名){
....
方法体
....
return 返回值;
}
形式参数:定义时的参数
实际参数:使用时传入的参数
return 可以结束方法
方法的调用
当方法返回一个值的时候,方法的调用通常被当作一个值;
如果方法返回void,方法调用一定是一条语句。
java是值传递!!!
对于对象参数,值的内容是对象的引用
03方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数
仅仅返回类型不同不足以成为方法的重载
04命令行传递参数(不重要)
main函数也可以传递参数
1.在cmd里用javac 编译
2.用java执行,在后面加上参数
需要返回到src目录中
cd../ 用来返回上一级路径
Java com.hwh.具体 参数
05可变参数
jdk1.5开始支持的
可变长参数相当于一个数组,可以用 a[0]这种形式使用
在方法的声明中,在指定的参数类型后加一个省略号(…)
一个方法中只能指定一个可变参数,并且放在所有参数的最后面
06递归
自己调用自己
递归头:一定要写什么时候不调用自身方法!!!
递归体:什么时候进行递归
Java数组
01什么是数组
数组是相同类型数据的有序集合
按照一定的先后次序排列组合而成
每个数组元素可以通过下标来访问他们,从0开始
数组的长度是固定的,不可变
02数组的声明和创建
数组的声明//栈
int[] num;//首选
int num[];//c
数组的创建//堆,并且和上面栈对应
num= new int[10];
数组的赋值(不赋值就返回默认值)
num[0]= 1;
....
以此类推
数组的长度 num.length
03三种初始化及内存分析
java内存:
1.堆:存放new的对象和数组,可以被所有线程共享,不会存放别的对象引用
2.栈:存放基本变量类型(包含其的具体数值),引用对象的变量(会存放这个引用在堆里的具体地址)
3.方法区:可以被所有线程共享,包含了所有的class和static变量
三种初始化:
1.静态初始化
int[] a={1,2,3,4,5};//创建加赋值
2.动态初始化
int[] a=new int[10];//创建,初始化都为0
逐个赋值
3.默认初始化
数组是引用类型,他的元素相当于类的实例变量
分配空间后,没有被初始化的空间都是默认值
04下标越界及小结
数组的基本特点
1.长度是确定的
2.元素相同类型
3.元素可以是任何类型(基本类型和引用类型)
4.数组变量是引用类型,数组本身是对象,数组本身在堆中。
数组下标越界异常java.lang.ArrayIndexOutOfBounds
05数组的使用
1.增强的for循环适合打印输出(取不到下标)
for(int array:arrays){
}
2.数组可以作为传参,也可以作为返回值
06多维数组
int[][] a={{1,2},{3,4}};//创建加赋值
没啥好说的啊吧啊吧
07Arrays类
import java.util.Arrays;
Arrays.tostring(a);//打印数组
Arrays.sort(a); //数组排序,是升序
Arrays.fill(); //填充数组
Arrays.fill(arr,4);//给所有值赋值4
Arrays.fill(arr, 2,4,6);//给第2位(0开始)到第4位(不包括)赋值6
Arrays.equals(); //比较数组元素是否相等
08冒泡排序
从头开始相邻元素两两比较,大小相反就互换
没啥好说的,双层循环就行
09稀疏数组
有很多数组很多空间没有被使用,可以使用稀疏数组来压缩
(时间换空间)
1.记录数组有几行几列几个不同的值,放在0
2.把不同数组的行列值放在一个小规模的数组中
JAVA异常
01error和exception
1.检查性异常:用户操作错误
2.运行时异常:可能被程序员避免的异常
3.错误error:不是异常,程序员也看不到,无法预见
Java把异常当作对象处理,并定义了一个java.lang.Throwable作为所有异常的超类。
异常分为两大类error和exception
error由java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
exception分支中有一个重要的子类RuntimeException(运行时异常)
1)java.lang.NullPointerException 空指针异常;出现原因:调用了未经初始化的对象或者是不存在的对象。
2)java.lang.ClassNotFoundException 指定的类找不到;出现原因:类的名称和路径加载错误;通常都是程序
试图通过字符串来加载某个类时可能引发异常。
3)java.lang.NumberFormatException 字符串转换为数字异常;出现原因:字符型数据中包含非数字型字符。
4)java.lang.IndexOutOfBoundsException 数组角标越界异常,常见于操作数组对象时发生。
5)java.lang.IllegalArgumentException 方法传递参数错误。
6)java.lang.ClassCastException 数据类型转换异常
这些异常是不检查异常,程序中可以选择捕获也可以不处理
一般是由程序逻辑错误引起的
error和exception区别:
error一般是灾难性的,致命性的错误,jvm会选择终止线程。
exception通常情况下是可以被处理的,并在程序中应该尽可能的去处理这些异常。
02捕获和抛出异常
try catch finally
try{
//监控区域
}catch(想要捕获的异常类型 e){
//出现异常时做点什么
}finally{//处理善后工作,一般可以关闭资源,比如io流,数据库连接等
}
throw主动抛出异常,一般在方法中使用
throws new 异常类型();
throws这个方法处理不了这个异常,在方法上抛出异常,让上级处理
catch可以捕获多个异常,写多个catch,要把最大的异常写在最后面
快捷键:ctrl alt t
抛出就是不处理异常,捕获要处理异常
03自定义异常
自定义异常只要继承exception即可
自己写一个构造方法,和一个打印方法就可以了