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

简介: 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,从而简化代码,但可读性大大降低。

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

  • 父类(静态变量、静态语句块)
  • 子类(静态变量、静态语句块)
  • 父类(实例变量、普通语句块)
  • 父类(构造函数)
  • 子类(实例变量、普通语句块)
  • 子类(构造函数)
目录
相关文章
|
19天前
|
存储 缓存 安全
除了变量,final还能修饰哪些Java元素
在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
22 2
|
6天前
|
前端开发 JavaScript Java
java常用数据判空、比较和类型转换
本文介绍了Java开发中常见的数据处理技巧,包括数据判空、数据比较和类型转换。详细讲解了字符串、Integer、对象、List、Map、Set及数组的判空方法,推荐使用工具类如StringUtils、Objects等。同时,讨论了基本数据类型与引用数据类型的比较方法,以及自动类型转换和强制类型转换的规则。最后,提供了数值类型与字符串互相转换的具体示例。
|
21天前
|
设计模式 JavaScript 前端开发
java中的static关键字
欢迎来到瑞雨溪的博客,博主是一名热爱JavaScript和Vue的大一学生,致力于全栈开发。如果你从我的文章中受益,欢迎关注我,将持续分享更多优质内容。你的支持是我前进的动力!🎉🎉🎉
47 8
|
24天前
|
Java
java switch case多个条件
通过本文的介绍,我们详细探讨了Java中 `switch case`语句的多种用法和优化方法。从基本语法到合并多个条件,再到使用枚举、常量和函数优化,`switch case`语句在Java编程中提供了一种灵活且高效的控制流方式。掌握这些技巧,能够编写出更加简洁、可读性强的代码,提高开发效率和代码质量。希望本文能为您在实际开发中提供有价值的参考和指导。
49 2
|
1月前
|
存储 Java
Java 中的静态(static)
【10月更文挑战第15天】静态是 Java 语言中一个非常重要的特性,它为我们提供了一种方便、高效的方式来管理和共享资源。然而,在使用过程中,我们需要谨慎考虑其优缺点,以确保代码的质量和可维护性。
|
19天前
|
Java
final 在 java 中有什么作用
在 Java 中,`final` 关键字用于限制变量、方法和类的修改或继承。对变量使用 `final` 可使其成为常量;对方法使用 `final` 禁止其被重写;对类使用 `final` 禁止其被继承。
31 0
|
2月前
|
Java 测试技术 编译器
🎯Java零基础-Switch条件语句详解 🎯
【10月更文挑战第8天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
35 6
|
2月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
34 3
|
2月前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
在Java并发编程中,`final`关键字不仅用于修饰变量、方法和类,还在多线程环境中确保对象状态的可见性和不变性。本文深入探讨了`final`关键字的作用,特别是其在final域重排序规则中的应用,以及如何防止对象的“部分创建”问题,确保线程安全。通过具体示例,文章详细解析了final域的写入和读取操作的重排序规则,以及这些规则在不同处理器上的实现差异。
了解final关键字在Java并发编程领域的作用吗?
|
2月前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
26 5