【重学Java三】参数传递、类型转换、Switch、Final、Static

举报
莫逸风 发表于 2022/07/26 15:08:52 2022/07/26
【摘要】 private方法隐式地被指定为final,如果在子类中定义的方法和基类中的一个private方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法。**静态内部类**非静态内部类依赖于外部类的示例,也就是说需要先创建外部类示例,才能用这个实例去创建非静态内部类,而静态内部类不需要。**静态变量**又称类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以通过类名

三、参数传递、类型转换、Switch、Final、Static

1. 参数传递

Java 的参数是以值传递的形式传入方法中,而不是引用传递。基本类型值就是值,引用类型变量的值是引用地址。

public static void main(String[] args) {
  Apple apple = new Apple("莫逸风");
  String str = "莫逸风";
  updateName(apple);
  updateName(str);
  System.out.println(apple.getName()); // 莫逸雪
  System.out.println(str);             // 莫逸风
}

public static void updateName(Apple apple){
  apple.setName("莫逸雪");
}

public static void updateName(String str){
  str = "莫逸雪";
}
2. 类型转换

Java 不能隐式执行向下转型,因为这会使得精度降低。

short s1 = 1;
s1 = s1 + 1;

第二行赋值是错误的,因为字面量1是int不能隐式类型转换为shot。

但是使用+=、-=、*=、、= 或者 ++、-- 运算符会执行隐式类型转换。

s1 += 1;
s1++;

上面的语句隐式的进行了强制类型转换,相当于

s1 = (short) (s1 + 1);
3. Switch

从 Java 7 开始,可以在 switch 条件判断语句中使用 String 对象。

switch 不支持 long、float、double,是因为 switch 的设计初衷是对那些只有少数几个值的类型进行等值判断,如果值过于复杂,那么还是用 if 比较合适。

4. Final

**数据:**声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。对于基本类型,final 使数值不变;对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。

**方法:**声明方法不能被子类重写。private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法。

**类:**声明类不允许被继承

5. Static

**静态变量:**又称类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以通过类名来访问它。静态变量在内存中只存在一份。

实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。

**静态方法:**静态方法在类加载的时候就存在了,方法中不能有this和super关键字,因为这两个关键字与具体对象关联。

**静态语句块:**静态语句块在类初始化时运行一次。

**静态内部类:**非静态内部类依赖于外部类的示例,也就是说需要先创建外部类示例,才能用这个实例去创建非静态内部类,而静态内部类不需要。静态内部类不能访问外部类的非静态的变量和方法。

**静态导包:**在使用静态变量和方法时不用再指明 ClassName,从而简化代码,但可读性大大降低。

存在继承的情况下,初始化顺序为:

  • 父类(静态变量、静态语句块)
  • 子类(静态变量、静态语句块)
  • 父类(实例变量、普通语句块)
  • 父类(构造函数)
  • 子类(实例变量、普通语句块)
  • 子类(构造函数)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。