当前位置: 首页 > news >正文

花几千上万学习Java,真没必要!(二十二)

1、final关键字:

 

测试代码1:

package finaltest.com;public class FinalBasicDemo {public static void main(String[] args) {// final修饰基本数据类型变量final int number = 5;// 尝试修改number的值,这将导致编译错误// number = 10; // 这行会报错System.out.println("number: " + number);}
}

测试代码2:

package finaltest.com;//final关键字
public class FinalDemo {  // final静态变量,在声明时初始化  private static final int MAX_SIZE = 100;  // final实例变量,通常在构造方法中初始化  private final String name;  // final局部变量,通常在声明时或初始化块中初始化  // 不直接在类中声明final局部变量,因为它需要被赋值  // 构造方法  public FinalDemo(String name) {  this.name = name; // 初始化final实例变量  }  // final方法,表示该方法不能被子类重写  public final void showDetails() {  System.out.println("Name: " + name);  System.out.println("Max Size: " + MAX_SIZE);  }  // 普通方法,在方法内部使用final局部变量  public void processData(int[] data) {  // final局部变量,在声明时初始化  final int threshold = 50;  for (int i = 0; i < data.length; i++) {  if (data[i] > threshold) {  System.out.println("Data[" + i + "]: " + data[i] + " is greater than threshold.");  }  }  }  // main方法,测试FinalDemo类  public static void main(String[] args) {  // 创建FinalDemo对象  FinalDemo demo = new FinalDemo("ExampleObject");  // 调用final方法  demo.showDetails();  // 调用普通方法,并传递一个整数数组  int[] data = {20, 60, 30, 80, 40};  demo.processData(data);  // 尝试修改final静态变量的值(编译错误)  //FinalDemo.MAX_SIZE = 200; // 这行会报错  // 尝试在构造方法之外修改final实例变量的值(编译错误)  // demo.name = "NewName"; // 这行也会报错  }   
}

运行结果如下:

 

测试代码3:

package finaltest.com;
public class FinalReferenceDemo {  static class MyObject {  int value;  public MyObject(int value) {  this.value = value;  }  public void setValue(int value) {  this.value = value;  }  @Override  public String toString() {  return "MyObject{" + "value=" + value + '}';  }  }  public static void main(String[] args) {  // final修饰引用数据类型变量  final MyObject obj = new MyObject(10);  // 尝试修改obj的引用(即对象的地址),将导致编译错误  // MyObject newObj = new MyObject(20);  // obj = newObj; // 这行会报错  // 可以改变obj引用对象内部的数据  obj.setValue(20);  System.out.println(obj); }  
}

 测试代码4:

package finaltest.com;
//一个 final 实例变量 finalInstanceVar,它必须在构造方法中初始化。
//一个 static final 静态变量 STATIC_FINAL_VAR,它在声明时就被初始化了,并且可以通过类名直接访问。
//一个 final 方法 finalMethod,该方法不能被任何子类重写。
//一个普通方法 printInfo,用于打印实例变量和静态变量的值。
public class MyClass {  // final 实例变量,必须在构造方法中初始化  private final int finalInstanceVartest;  // final 静态变量,在声明时初始化  private static final int STATIC_FINAL_VAR = 42;  // 构造方法,用于初始化final实例变量  public MyClass(int finalInstanceVar) {  this.finalInstanceVartest = finalInstanceVar;  }  // final 方法,表示该方法不能被重写  public final void finalMethod() {  System.out.println("This is a final method.");  }  // 普通方法,可以访问final变量  public void printInfo() {  System.out.println("Final instance var: " + finalInstanceVartest);  System.out.println("Static final var: " + STATIC_FINAL_VAR);  }  // main 方法,测试这个类  public static void main(String[] args) {  MyClass obj = new MyClass(10);  obj.finalMethod(); // 调用final方法  obj.printInfo(); // 调用普通方法,打印信息  // 尝试访问静态final变量,可以直接通过类名访问  System.out.println("Direct access to static final var: " + MyClass.STATIC_FINAL_VAR);  }  
}

运行结果如下:

 

2、static关键字:

 

测试代码1:

package finaltest.com;
public class StaticDemo {  // 静态变量  static int counter = 0;  // 静态初始化块  static {  System.out.println("Static block initialized");  }  // 静态内部类  static class StaticInner {  public void display() {  System.out.println("Static inner class method");  }  }  // 构造方法,实现静态变量的增加  public StaticDemo() {  counter++;  }  // 静态方法  public static int add(int a, int b) {  return a + b;  }  // 主方法,说明静态变量、静态方法和静态内部类的使用  public static void main(String[] args) {  // 静态代码块会在类加载时自动执行  // 调用静态方法  System.out.println("Sum of 5 and 3 is: " + add(5, 3));  // 访问静态变量  System.out.println("Number of StaticDemo objects created: " + counter);  // 使用静态内部类  StaticInner inner = new StaticInner();  inner.display();  }public void displayInstanceCount() {  // 直接访问静态变量instanceCount并打印其值  System.out.println("Number of StaticDemo objects created: " + counter);  } 
}

运行结果如下:

 

测试代码2:

package finaltest.com;
public class StaticTest {// 静态变量private static int instanceCount = 0;// 静态代码块static {System.out.println("Static block initialized");// 实现静态变量的初始化代码}// 构造方法,实现静态变量的增加public StaticTest() {instanceCount++;}// 静态方法public static int add(int a, int b) {return a + b;}// 静态内部类static class DatabaseConnection {// 数据库连接private static String connectionString = "jdbc:mysql://localhost:3306/mydb";// 静态方法,模拟获取数据库连接public static String getConnectionString() {return connectionString;}}// 一个非静态方法public void displayInstanceCount() {System.out.println("Number of StaticDemo objects created: " + instanceCount);}// 主方法,说明静态和非静态成员的使用public static void main(String[] args) {// 静态代码块会在类加载时自动执行// 调用静态方法System.out.println("Sum of 5 and 3 is: " + add(5, 3));// 访问静态内部类的静态成员System.out.println("Database connection string: " + DatabaseConnection.getConnectionString());// 创建StaticDemo的实例StaticDemo obj1 = new StaticDemo();StaticDemo obj2 = new StaticDemo();// 调用非静态方法obj1.displayInstanceCount(); }
}

运行结果如下:

 

 

 

 

 

 

http://www.lryc.cn/news/404638.html

相关文章:

  • 在RK3568上如何烧录MAC?
  • 1.30、基于卷积神经网络的手写数字旋转角度预测(matlab)
  • Windows如何使用Python的sphinx
  • C++ STL nth_element 用法
  • 【PostgreSQL教程】PostgreSQL 选择数据库
  • C# —— HashTable
  • LeetCode 第407场周赛个人题解
  • 使用Django框架实现音频上传功能
  • [路由器]IP-MAC的绑定与取消
  • Idea配置远程开发
  • lua 实现 函数 判断两个时间戳是否在同一天
  • 工作纪实53-log4j日志打印文件隔离
  • 7月21日,贪心练习
  • FPGA DNA 获取 DNA_PORT
  • 使用 hutool工具实现导入导出功能。
  • 大语言模型-Transformer-Attention Is All You Need
  • spring(二)
  • MAC 数据恢复软件: STELLAR Data Recovery For MAC V. 12.1 更多增强功能
  • 初识godot游戏引擎并安装
  • Windows配置Qt+VLC
  • 本地部署 mistralai/Mistral-Nemo-Instruct-2407
  • 2月科研——arcgis计算植被差异
  • 深入理解Android中的缓存与文件存储目录
  • Linux_生产消费者模型
  • 【Vue】`v-if` 指令详解:条件渲染的高效实现
  • junit mockito Base基类
  • 朋友圈运营分享干货2
  • linux中创建一个名为“thread1“,堆栈大小为1024,优先级为2的线程
  • 架构以及架构中的组件
  • Docker启动PostgreSql并设置时间与主机同步