对象的行为
方法调用栈
改变程序控制流程的行为
- 方法的调用
- 选择语句
循环语句
方法调用栈遵循先进后出的原则 ,如洗碗一样。而生活中的如队列遵循先进先出的原则,如排队买票。
在java程序中,第一个被JVM调用的方法是main(),所以main()总是在调用栈的底部。
调用方法
一个方法被调用时,该方法就被放在调用栈的顶部,直到方法执行完成。
调用方法
- 方法返回一个值。返回给调用者。
- 不返回一个值。用void。
- 方法抛出异常给调用者。
方法可以以全局的形式出现,可以在任何时候调用。
方法签名
- 访问修饰符:public、private、protected或默认访问修饰符(即没有访问修饰符)
- 可选修饰符:static、final、abstract、native、synchronized。类的方法可以不使用,也可以使用多个。
- 返回值;八个基本类型之一或一个引用类型。
- 方法名;驼峰命名法
- 形式参数列表;
- 抛出的异常列表
形参和实参
在java中,方法调用之间只有值传递。
方法重载
方法重载:当一个类有两个到多个同名但不同参数列表的方法时,就是方法重载。
- 对象名
- 对象名的方法
- 参数列表
构造器-构造方法
作用:产生对象,不能有返回类型。
用途:当对象实例化时,初始化对象中的成员变量。
this用法:
1、this.
- 属性;this此时指代当前对象。
- 方法
2、this():一个构造方法调用本类的另一个构造方法,从而达到构造方法代码复用。且只能用于构造方法调用。只能写在构造方法内。只能写在构造方法第一句。
数组
数组三大特点,也是其三大缺点。
- 大小长度不可变
- 元素类型一致,都是基本数据类型
- 连续内存地址空间
在java中。创建数组有两个步骤:
- 声明一个队数组的引用
- 使用new初始化数组,并指定大小
数组初始化是两种方式:
1、如:int [] sums = new int [5];
2、如:int [] sums = {1,3,5,7,9};
数组复制 两种方式:
1、for循环
public static void main(String[] args) {
int[] a = {1,3,5,7,9};
int[] b = new int[a.length + 1];
// System.arraycopy(a, 0, b, 0, a.length);
for(int i = 0; i < a.length; i++){
b[i] = a[i];
}
a = b;
System.out.println(a[3]);`
}
2、System.arraycopy(源数组,目标数字,源数组起始位置,目标数组其实位置,要复制的元素的数目);方法
public static void main(String[] args) {
int[] a = {1,3,5};
int[] b = {27,99,80};
int[] c = new int[a.length + b.length];
// System.arraycopy(a, 0, c, 0, a.length);
// System.arraycopy(b, 0, c, a.length, b.length);
for(int i = 0; i < c.length; i++){
System.out.println(c[i]);
}
for(int i = 0; i < a.length; i++){
c[i] = a[i];
}
for(int i = 0; i < b.length; i++){
c[i + a.length] = b[i];
}
删除数组中的某一元素
public static void main(String[] args) {
int[] array = {5,34,-9,21,64};
Scanner scan = new Scanner(System.in);
System.out.println("请输入你要删除的元素的下标:");
int index = scan.nextInt();
System.arraycopy(array, index+1, array, index, array.length - index - 1);
// for(int i=index+1;i<array.length;i++){
// array[i-1]=array[i];
// }
//
// for(int i = index; i < array.length - 1; i++){
// array[index] = array[index + 1];
// }
array[array.length-1]=0;
for(int i = 0; i < array.length; i++){
System.out.print(array[i]+" ");
}
}
当数组作为形参传递的时候有两种声明方式。代码如下:
1、传统方式 [ ] —调用者只能传递数组对象进来。
2、JDK1.5之后的新方式changeCase()—调用者即可以传递数组对象,也可以直接传递任意个数组的元素进来。
public static void main(String[] args) {
char[] array = {'H','e','l','L','o','!'};
changeCase(array);
changeCase('W','o','R','L','d'); //changeCase(...);
for(int i = 0; i < array.length; i++){
System.out.println(array[i]);
}
}
/**当数组作为形参的时候,有两种声明方式。
1、传统方式[]---调用者只能传递数组对象进来
2、JDK1.5之后的新方式...---调用者即可以传递数组对象,也可以直接传递任意个数组的元素进来*/
// public static void changeCase(char[] array){
public static void changeCase(char... array){
for(int i = 0; i < array.length; i++){
if (array[i] >= 'A' && array[i] <= 'Z') {
array[i] += 32;
}else if(array[i] >= 'a' && array[i] <= 'z'){
array[i] = (char)(array[i] - 32);
}
}
}
}