4.3自定义类 1.class Xxx{field字段 constructor构造器 method方法}class Employee { //实例字段 private String name; private double salary; private LocalDate hireDay; //构造器总是和new操作符一起调用 public Employee(String n,double s,int year,int month,int day) { namen; salarys; hireDayLocalDate.of(year,month,day); } //方法 public String getName() { return name; } public void raiseSalary(double byPercent) { double raisesalary*byPercent/100; salaryraise; } }2.使用多个源文件把不同的类写进不同的.java文件里然后让它们互相调用。同一个包下package不用import不同包下用import。3.PS:1为什么说String是一个类在 Java 中String被定义在java.lang包中源码开头就是public final class String意味着这个类是最终版不能有子类。它和我们自己写的class Person本质一样都是“引用数据类型”。关键颠覆认知点Java 给String开了“语法外挂”你可以直接用双引号abc写字符串而不用new这让你误以为它是基本类型。但它在内存中依然是堆里的对象和LocalDate毫无区别。2int、double是基本数据类型基本类型直接存数值存在栈中没有方法可调用你不能写int a 5; a.toString();。基本类型只有八种整数类byte字节、short短整、int整型、long长整小数类float单精度、double双精度字符类char单个字符真假类boolean布尔值true/falseString、LocalDate是引用数据类型存的是堆内存地址拥有丰富的方法你可以写abc.length()。4.varvar关键字只能用于方法中的局部变量参数和字段的类型必须声明。我们不会对数值类型使用var如int、long、double这样你就不用当心00L0.0之间的区别。局部变量public void myMethod() { // ✅ 正确方法内部立即赋值 var name 张三; // 推断为 String var today LocalDate.now(); // 推断为 LocalDate var list new ArrayListString(); // 推断为 ArrayListString }参数public void setInfo(var id, var name) {}//不行字段public class Person { var name; //不行 private String address;//可以 }5.null如果对null值应用一个方法会产生一个NullPointerException异常解决方法requireNonNullElse、requireNonNull6.隐式参数、显示参数public void raiseSalary(double byPercent) { double raisesalary*byPercent/100; salaryraise; }隐式参数salary关键字this指示隐式参数形式this.salary显示参数byPercent局部变量7.封装即类字段访问器方法,字段更改器方法注意不要编写返回可变对象引用可变类的访问器方法如Date类型存在更改器方法对其调用更改器方法会改变对象的私有状态首先应该对它进行克隆return (Date)hireDay.clone();P1138.final差不多对应其它语言中的常量但是每个对象都存一份相同的字符串不可变类类中的方法都是访问器方法1final变量可以不赋初值但必须在构造器Constructor中给它赋值。private final int id12138//赋初值且之后不能再改 private final int id; // 没有赋初值 public Person(int id) { this.id id; // 必须在构造器里赋值且之后不能再改 }2final修饰变量final int MAX_SPEED 120; final LocalDate date LocalDate.now();基本类型变量数值不能再做修改引用类型变量不能再指向其他对象但“遥控器”指向的对象本身内部是可以被修改的如果它是可变类的话。eg:由于LocalDate类是不可变类即类中方法均为访问器方法对于值的修改是基于对象的值计算出新值并以新对象的形式返回不是对原对象的修改。date LocalDate.of(2026, 8, 7);不行。而Date类这种可变类可以使用date.setTime();修改这个对象的值。3final修饰方法禁止子类重写public class Parent { public final void criticalLogic() { System.out.println(核心算法); } }4final修饰类无法被继承public final class Math { // 你无法 extends Math // ... }

相关新闻

最新新闻

AutoGen进阶实战:构建高效可控的多智能体协作系统

AutoGen进阶实战:构建高效可控的多智能体协作系统

1. 从“能用”到“好用”:AutoGen进阶的核心价值如果你已经跟着教程跑通了第一个AutoGen的“Hello World”,让两个智能体聊了几句天,那么恭喜你,你已经打开了多智能体协作开发的大门。但紧接着,你可能会遇到一些现实问…

2026/8/8 8:48:51
XSS实战:绕过过滤的payload变形技巧与防御策略

XSS实战:绕过过滤的payload变形技巧与防御策略

1. 项目概述&#xff1a;从“能弹窗”到“能实战”的跨越 很多刚接触Web安全的朋友&#xff0c;对XSS&#xff08;跨站脚本攻击&#xff09;的理解可能还停留在“在输入框里敲个 <script>alert(1)</script> &#xff0c;然后看能不能弹窗”的阶段。一旦弹窗成功&…

2026/8/8 8:48:51
Java与Python中特殊字符处理实战:编码、存储与传输

Java与Python中特殊字符处理实战:编码、存储与传输

在实际开发中&#xff0c;我们经常需要处理一些来自外部系统、用户输入或网络请求的字符串数据&#xff0c;这些数据可能包含一些非标准的、特殊的或难以直接处理的字符。例如&#xff0c;一个游戏角色或动漫角色的名字&#xff0c;如“芙兰朵露斯卡雷霆”&#xff0c;其中包含…

2026/8/8 8:48:51
SpringBoot整合MinIO:从基础配置到生产级对象存储实践

SpringBoot整合MinIO:从基础配置到生产级对象存储实践

1. 为什么说“看这一篇就够了”&#xff1a;从需求到选型的深度思考 如果你正在为一个Java项目寻找一个可靠、高性能且易于集成的对象存储方案&#xff0c;并且这个项目恰好基于SpringBoot&#xff0c;那么“SpringBoot整合MinIO”这个组合大概率已经进入了你的视野。网上相关的…

2026/8/8 8:48:51
105-用例维护与过期清理:为什么知识资产也会失效

105-用例维护与过期清理:为什么知识资产也会失效

适合对象:关注用例治理、资产质量、长期维护成本的测试工程师和平台管理员。 先说结论 用例维护与过期清理不是一个孤立功能,而是精准测试平台里帮助团队做判断的一环。 它重点解决的是:为什么知识资产也会失效。 用大白话讲,用例和目录治理的目标是把测试资产和版本、快…

2026/8/8 8:48:51
计算机毕业设计之基于Spring Boot的旅社管理系统的设计与实现

计算机毕业设计之基于Spring Boot的旅社管理系统的设计与实现

随着网络科学技术不断的发展和普及化&#xff0c;用户在寻找适合自己的信息管理系统时面临着越来越大的挑战。因此&#xff0c;本文介绍了一套旅社管理系统&#xff0c;在技术实现方面&#xff0c;本系统采用JAVA、HTML、CSS、JS以及MySQL数据库编程&#xff0c;使用springboot…

2026/8/8 8:43:51