java之旅之对象的行为

对象的行为

方法调用栈

改变程序控制流程的行为

  • 方法的调用
  • 选择语句
  • 循环语句

    方法调用栈遵循先进后出的原则 ,如洗碗一样。而生活中的如队列遵循先进先出的原则,如排队买票。
    在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);
            }
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值