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

浙公网安备 33010602011771号