Day3 java面向对象初探

java方法

  • 类似于c++的函数

  • 不同的是,对于每一种方法,都要加上修饰符来确定其访问类型

  • 重载:参数列表不同,方法名称相同,仅仅返回值类型不同不能作为重载

 

可变参数

  • 在指定参数类型后面加一个省略号(...)

  • 一个方法只能指定一个可变参数,且该可变参数必须是方法的最后一个参数

public class ChangleableParameter {
   public static void main(String[] args) {

  }
   //...相当于传递了一个数组,且该数组是可变的
   public void Changleable(double... numbers) {
       for (int i = 0; i < numbers.length; i++) {
           System.out.println(numbers[i]);
      }
  }
}

 

java内存区域

    • 存放new的对象和数组

    • 被所有线程共享,不会存放别的对象引用

    • 存放基本变量

    • 引用类型变量

  • 方法区

    • 包含了所有的class和static变量

    • 可以被所有线程共享

数组

  • java中数组初始化

  • 通过arrays.length可以直接拿到元素个数

public class ArrayDemo {
   public static void main(String[] args) {
       int []nums;  //定义,java推荐
       int nums2[]; //定义,类似c++
       int numSize = 10;
       nums = new int[numSize];
    int[] a = {1, 2, 3, 4, 5}; //静态初始化
    int[] b = new int[5];    //动态初始化
  }
}
  • 数组本身是一个对象,在java中对象一般在堆中保存的,如果jvm通过逃逸分析分析出对象存在逃逸方法,就会在堆上分配,否则会在栈上分配

  • 初始化分为静态初始化和动态初始化

  • 多维数组

public class ArrayDemo {
   public static void main(String[] args) {
       int [][] arrays = new int[3][];
       arrays[0] = new int[4];
       arrays[1] = new int[5];
       arrays[2] = new int[10];
  }
}
  • java数组类:java.util.Arrays

import java.util.Arrays;
public class ArrayDemo {
   public static void main(String[] args) {
       int [] arrays = {1231,12414,435,41,534,1411};
       Arrays.sort(arrays);
       System.out.println(Arrays.toString(arrays));
  }
}

 

static关键字

  • 与c++一样,加载的时间很早,在static中,无法调用非static方法,因为普通非static方法,在类实例化之后才调用

public class Function {
   public static void main(String[] args) {
       a();
  }
   public static void a() {
       Function function = new Function();
       function.b();
  }
   public void b() {
       System.out.println("b()");
  }
}

值传递与引用传递

  • java当中可以理解为都是值传递的,当普通数据类型时,方法传递的参数就是这个值,当为对象数据类型时,可以理解为方法传递的是这个对象数据的引用地址

  • 实际上可以理解为Student s = new Student(),表示的是新建一块Student的内存区域,将地址值赋值给引用s

posted @ 2021-01-14 09:18  pumpkin_bo  阅读(53)  评论(0)    收藏  举报