day3
1.String.equals
判断字符串是否相等,区别于“==”:
== 的作用:
基本类型:比较值是否相等
引用类型:比较内存地址值是否相等
equals 的作用:
引用类型:默认情况下,比较 **内存地址值**是否相等。可以按照需求逻辑,重写对象的equals方法。
2.switch
与C语言的格式一样
switch (变量){
case 值1:
语句1;
break;
case 值2:
语句2;
break;
default:
语句3;//所有的值都匹配不上,则到default语句
}
case中存在穿透现象,也就是case会从上到下依次执行,如果没有break语句跳出的话。
区别
从JDK7开始,switch支持String类型的比较。
case “陈某”:
语句;
//字符的本质还是数字。
通过反编译可以知道,给出的中文字符串在class文件反编译后,是一个hashCode,通过哈希值来实现case后的值的比较。
3.循环
增强for循环:
int [] numbers={0,1,2,3,4,5};
for(int x:numbers){
System.out.println(x);
}
将numbers中的每一个数赋值给X
4. 方法
注:java都是值传递
方法的重载
在一个类中,有相同的函数名称,但形式参数不同的函数。
注:方法名必须相同
参数列表必须不同
方法的返回类型可以相同可以不同
仅仅返回类型不同不足以成为方法的重载
实现的理论:方法名称相同时,JVM会根据调用方法的参数个数、参数类型来判断程序调用的时哪一个方法。
命令行传参
通过cmd编译时,javac 不需要退回到src目录下,执行时却需要在src目录下才能执行成功。
可变参数
java支持将同类型的可变参数传递给一个方法
该参数必须是方法中最后一个参数,任何参数都在它之前声明
用法:
public void addInt(int …x){
}
可以理解为有一个数组X,用来存放所有传递进去的整数。
5内存分析
数组的三种初始化:
静态初始化:
int[] a = {1,2,3};//常见的整型数组
Man[] mans = {new Man(),new Man()};//引用型数组
动态初始化:
int[] a = new int[2];
a[0] = 1;
数组的默认初始化:
a = {1,2,3};//常见的整型数组
Man[] mans = {new Man(),new Man()};//引用型数组
动态初始化:
int[] a = new int[2];
a[0] = 1;
数组的默认初始化:
数组也是一种引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中每个元素也呗按照实例变量同样的方式被隐式初始化。