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

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

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