网站备案核验点关于信用体系建设的网站
2026/1/10 13:33:43 网站建设 项目流程
网站备案核验点,关于信用体系建设的网站,怎样做集装箱网站,天津网站开发公司电话public class Test2 {//语法#xff0c;class 类名{}}class WashMachine{//字段/属性//方法//放在类里面#xff0c;方法外面#xff0c;叫字段#xff0c;属性#xff0c;成员变量public String brand;public String type;//接下来就是行为#xff0c;成员方法}//可以有…public class Test2 {//语法class 类名{}}class WashMachine{//字段/属性//方法//放在类里面方法外面叫字段属性成员变量public String brand;public String type;//接下来就是行为成员方法}//可以有若干的属性方法//类名使用大驼峰即首字母大写class Dog{public String name;public String color;public void eat(){//为什么没有staticSystem.out.println(吃狗粮);}}//建议一个文件一个类现在不符合现在很多个类//知道如何定义类//那怎么用![[Pasted image 20251208163740.png]]![[Pasted image 20251208164933.png]]class Dog {String name;int age;public void eat() {System.out.println(name is eating);}/*Dog(String name, int age) {this.name name; this.age age;*/ // }}public class Test {//由类生成对象的过程就叫做实例化public static void main(String[] args) {int a0;Dog dognew Dog();//new一个对象对象的实例化//创建好对象怎么使用对象// dog.age// dog.name System.out.println(dog.name);//没有值System.out.println(dog.age);}}String name;//成员有默认值//引用变量nullint age;//基本数据类型默认为对应00![[Pasted image 20251208165635.png]]![[Pasted image 20251208170102.png]]可以关键字new实例化多个对象类和对象的说明1. 类只是一个模型一样的东西用来对一个实体进行描述限定了类有哪些成员.2. 类是一种自定义的类型可以用来定义变量.3. 一个类可以实例化出多个对象实例化出的对象 占用实际的物理空间存储类成员变量4. 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子类就像是设计图只设计出需要什么东 西但是并没有实体的建筑存在同样类也只是一个设计实例化出的对象才能实际存储数据占用物理空 间public class Date {//日期public int year;public int month;public int day;//public以后讲public void printDate() {System.out.println(year年month月day日);}//写一个方法来设置年月日public void setDate(int year,int month,int day) {this.yearyear;this.monthmonth;this.dayday;}static void main(String[] args) {Date datenew Date();date.setDate(2025,12,8);date.printDate();}}![[Pasted image 20251208171629.png]]![[Pasted image 20251208172245.png]]怎么解当形参名和成员变量名时输出的结果都是0因为局部变量优先使用所以这仨都是一个到头来成员变量没有赋值public void setDate(int year,int month,int day) {yearyear;monthmonth;dayday;}那怎么解决就是加this.![[Pasted image 20251208191414.png]]this.yearyear;this.monthmonth;this.dayday;}this 到底代表什么代表当前对象的引用说明是当前对象怎么判断当前对象就比如public void setDate(int year,int month,int day) {this.yearyear;this.monthmonth;this.dayday;}static void main(String[] args) {Date datenew Date();date.setDate(2025,12,8); //这里的datedate.printDate();Date date1new Date();date.setDate(2026,12,8); //这里的date就是上面的thisdate.printDate();![[Pasted image 20251208192424.png]]![[Pasted image 20251208193433.png]]this的特性1. this的类型对应类类型引用即哪个对象调用就是哪个对象的引用类型2. this只能在成员方法中使用3. 在成员方法中this只能引用当前对象不能再引用其他对象this的用法有三种1 可以通过this 访问当前对象的成员变量2 可以通过this 访问当前对象的非静态的成员方法3 可以通过this 访问当前对象的其他构造方法public class Date {public Date(){System.out.println(这是不带参数的构造方法 );}//构造方法没有返回值方法名和当前类名一样//方法名 形参列表{// 方法体// }![[Pasted image 20251208205827.png]]![[Pasted image 20251208205843.png]]public Date(int year,int month,int day){this.year year;this.month month;this.day day;}//构造方法可以重载不止一个//构造方法最大的作用1不止一个2初始化对象当中的成员![[Pasted image 20251208212311.png]]//java会帮我写一个没有任何参数的构造方法public Date()){// this.year year;//this.month month;//this.day day;}前提是没有任何构造方法如果有其他构造方法就不可以救急不救穷本节要学会1 定义类和创建对象2 会访问对象当中的成员变量和成员方法3 明白this 是干嘛的4 明白构造方法是干嘛的| ||---||class WashMachine {|||//字段 、属性、 成员变量|||public String brand; // 品牌|||public String type; // 型号|||public double weight; // 重量|||public double length; // 长|||public double width; // 宽|||public double height; // 高|||public String color; // 颜色||||||//行为 、成员方法|||public void washClothes(){ // 洗衣服|||System.out.println(洗衣功能);|||}|||public void dryClothes(){ // 脱水|||System.out.println(脱水功能);|||}|||public void setTime(){ // 定时|||System.out.println(定时功能);|||}|||}|||//类 -》 类型 - 自定义的类型|||class Dog {|||public String name;|||public int age;||||||public void eat() {|||System.out.println(name吃狗粮);|||}|||}||||||public class Test2 {||||||public void test() {|||System.out.println(test.....);|||}||||||public static void main(String[] args) {|||Test2 test2 new Test2();|||test2.test();|||||||||//test();|||}||||||public static void main1(String[] args) {|||Dog dog new Dog();|||dog.name 小黑;|||dog.age 1;|||dog.eat();|||System.out.println(dog.name);|||System.out.println(dog.age);|||System.out.println();||||||Dog dog2 new Dog();|||dog2.name 小黄;|||dog2.age 10;|||dog2.eat();|||System.out.println(dog2.name);|||System.out.println(dog2.age);|||||||||/*int a;|||System.out.println(a);*/|||}|||}|# this.的用法详解this.用于**访问当前对象的成员**它的位置规则比 this()灵活得多。## 1. 基本用法public class Student {private String name; // 实例变量private int age;public Student(String name, int age) {// 使用 this. 区分参数和实例变量this.name name; // this.name 是实例变量name 是参数this.age age; // this.age 是实例变量age 是参数}public void printInfo() {// 访问当前对象的成员System.out.println(姓名 this.name);System.out.println(年龄 this.age);}}## 2. 位置规则非常灵活this.可以在类的**任何非静态上下文中使用**### ✅ 可以在方法中public void setName(String name) {this.name name; // ✅ 在实例方法中}### ✅ 可以在构造方法中this()之后public Student(String name) {this(name, 18); // ✅ 先调用其他构造必须是第一条this.printInfo(); // ✅ 之后可以使用 this. 调用方法}### ✅ 可以在代码块中public class Example {private int x 10;{// 实例初始化块System.out.println(x this.x); // ✅}}## 3. 主要使用场景### 场景1解决名称冲突public class Employee {private String name; // 实例变量private double salary;public void setName(String name) { // 参数 namethis.name name; // ✅ 左边是实例变量右边是参数}public void setSalary(double salary) {// salary salary; // ❌ 错误只是参数赋值给自己this.salary salary; // ✅ 正确参数赋值给实例变量}}### 场景2链式调用Builder模式//不认识public class Person {private String name;private int age;public Person setName(String name) {this.name name;return this; // 返回当前对象}public Person setAge(int age) {this.age age;return this; // 返回当前对象}}// 使用Person p new Person().setName(张三).setAge(25); // 链式调用### 场景3调用当前对象的其他方法public class Calculator {private int value;public void add(int x) {this.value x; // 使用 this. 访问字段this.print(); // 使用 this. 调用方法}public void print() {System.out.println(当前值 this.value);}}### 场景4作为参数传递public class Button {private String text;public void addClickListener() {// 将当前对象作为参数传递EventManager.register(this);}public void onClick() {System.out.println(按钮被点击: this.text);}}## 4. 与 this()的位置对比public class User {private String username;private String email;public User() {// 1. 这里必须是 this() 或 super()不能是 this.this(默认用户); // ✅ 必须是第一条}public User(String username) {// 2. 构造方法中this() 必须在最前面this(username, defaultemail.com); // ✅// 3. this() 之后可以使用 this.this.printInfo(); // ✅}public User(String username, String email) {// 4. 没有 this() 时可以直接用 this.this.username username; // ✅this.email email; // ✅}public void updateEmail(String email) {// 5. 普通方法中可以任意位置使用 this.if (email ! null) {this.email email; // ✅}this.sendNotification(); // ✅}}## 5. 什么时候可以省略 this.public class Product {private String name;private double price;public Product(String name, double price) {// 必须用 this.因为参数名和实例变量名相同this.name name;this.price price;}public double calculateTotal(int quantity) {// 可以省略 this.因为没有名称冲突return price * quantity; // price 就是 this.price}public void display() {// 也可以写成更清晰System.out.println(产品: this.name);System.out.println(价格: this.price);}}## 6. 特殊用法内部类中访问外部类public class Outer {private String outerField 外部字段;class Inner {private String innerField 内部字段;public void print() {System.out.println(innerField); // 自己的字段System.out.println(this.innerField); // 明确访问自己的字段System.out.println(outerField); // 外部类的字段System.out.println(Outer.this.outerField); // ✅ 明确访问外部类字段}}}## 7. 常见错误### ❌ 在静态上下文中使用public class Test {private int x 10;public static void staticMethod() {// System.out.println(this.x); // ❌ 错误静态方法中不能使用 this}}### ❌ 在 main 方法中使用public class Main {private String name Test;public static void main(String[] args) {// System.out.println(this.name); // ❌ 错误main 是静态方法}}## 8. 总结对比|特性|this()|this.||---|---|---||**用途**​|调用本类其他构造方法|访问当前对象成员||**位置限制**​|必须是构造方法第一条语句|几乎任何地方非静态上下文中||**使用场景**​|构造方法重载、代码复用|解决名称冲突、链式调用、访问成员||**能否在静态方法中使用**​|不能|不能||**调用次数**​|一次每个构造方法只能调用一次|多次可以多次使用|**简单记忆**- this()→ 只在构造方法中且必须是**第一条语句**- this.→ 任何地方除了静态上下文用于**访问当前对象的成员**我来详细解释 Java 中 this()构造方法调用的位置规则。## 1. 基本规则**this()调用必须是构造方法中的第一条语句**public class Person {private String name;private int age;public Person() {// this() 必须是第一条语句this(无名氏, 18); // ✅ 正确// 其他代码...}public Person(String name, int age) {this.name name;this.age age;}}## 2. 常见错误示例### ❌ 错误this()不是第一条语句public Person() {System.out.println(创建Person对象); // 错误在 this() 之前this(无名氏, 18); // ❌ 编译错误}### ❌ 错误this()和 super()同时存在public Person() {super(); // 错误不能同时有 this() 和 super()this(无名氏, 18); // ❌ 编译错误}## 3. 正确用法示例### ✅ 正确构造方法重载public class Rectangle {private int width;private int height;// 无参构造public Rectangle() {this(10, 10); // ✅ 调用有参构造}// 一个参数构造public Rectangle(int size) {this(size, size); // ✅ 调用两个参数构造}// 两个参数构造主构造public Rectangle(int width, int height) {this.width width;this.height height;}}### ✅ 正确带验证的构造public class BankAccount {private String owner;private double balance;public BankAccount(String owner) {this(owner, 0.0); // ✅ 调用两个参数的构造}public BankAccount(String owner, double initialBalance) {// 参数验证if (owner null || owner.trim().isEmpty()) {throw new IllegalArgumentException(账户名不能为空);}if (initialBalance 0) {throw new IllegalArgumentException(初始余额不能为负);}this.owner owner;this.balance initialBalance;}}## 4. 为什么有这样的限制1. **对象初始化顺序**确保父类构造先于子类构造执行2. **避免重复初始化**防止字段被多次初始化3. **保证对象一致性**确保对象在构造完成前处于一致状态## 5. 特殊技巧使用静态工厂方法如果需要更复杂的初始化逻辑可以使用静态工厂方法public class ComplexObject {private final String data;private ComplexObject(String data) {this.data data;}// 静态工厂方法可以有复杂逻辑public static ComplexObject create(String input) {// 可以在调用构造方法前做各种处理if (input null) {input default;}String processed processInput(input);// 最后调用私有构造return new ComplexObject(processed);}private static String processInput(String input) {return input.trim().toUpperCase();}}## 6. 总结|规则|说明||---|---||必须是第一条语句|this()必须在构造方法的第一行||不能和 super()共存|一个构造方法只能调用 this()或 super()之一||只能调用一次|一个构造方法只能有一个 this()调用||不能递归调用|不能形成构造方法的无限递归||必须在构造方法中|只能在构造方法中使用 this()|记住这个简单规则**如果你要在构造方法中使用 this()调用其他构造它必须是该构造方法的第一条且唯一的构造调用语句。**![[Pasted image 20251209191145.png]]实例化对象的时候一定会调用构造方法如果当前类当中没有任何构造方法吗Java会默认一个不带参数的构造方法构造方法的核心作用初始化对象状态## 4. 构造方法 vs 普通方法|对比点|构造方法|普通方法||---|---|---||**调用时机**​|创建对象时自动调用|需要显式调用||**调用方式**​|new ClassName()|object.methodName()||**名称**​|必须与类名相同|任意合法标识符||**返回值**​|没有返回值类型连void都没有|有返回值类型或void||**继承**​|不被子类继承|被子类继承除非private||**默认提供**​|不写时提供默认无参构造|不提供默认方法|![[Pasted image 20251209201040.png]]![[Pasted image 20251209201058.png]]对面向对象的语言来说有几个重要特性封装继承多态是面向对象的特征1. 封装class Student {private String name;public int age;public String sutNum;封装就是对成员变量或成员方法使用private进行修饰这可以让成员变量或者成员方法只能在类当中使用publicprivateprotected,都是管使用权限的在类内在包内)class Student {private String name;//只能在class Student这个类内使用public int age;public String sutNum;public String getName() {return name;}public void setName(String name) {this.name name;}//上有政策下有对策即使private也能使用即使封装也能使用public class Test{public static void main(String[] args) {//对象的实例化Student s1 new Student();Student s2 new Student(zhagnsan,10,1234);s1.getName();s2.setName(zhangsan);}private void eat(){//在本类服务不对外公开//其他业务操作System.out.println(nameEating);}public void sleep(){eat();//这样子就可以但是不知道里面是什么细节不知道System.out.println(nameSleeping);}![[Pasted image 20251209204035.png]]private是只能在包的类中使用default是可以在包中使用void setSutNum(String sutNum) {this.sutNum sutNum;}public是都可以包就是文件夹啊//import java.util.Arrays;//导入路径import java.util.*;//也可以这样子不建议import java.util.Date;int[]array{1,2,3};System.out.println(java.util.Arrays.toString(array));要不导包要不写一边写导包Date d new Date();java.sql.Date sqlDate new java.sql.Date(d.getTime());//这个就不能导包了只能写在前面当两个访问的包有两个Date其中一个就只能服务总结![[Pasted image 20251209213818.png]]//自定义包![[Pasted image 20251209220035.png]]为什么![[Pasted image 20251209220100.png]]![[Pasted image 20251209220602.png]]假如我们都是1班的那么就不修改这个| ||---||public class Test {||||||public static void main(String[] args) {|||//Student.className 1班;|||||||||Student student1 null;|||/*student1.className 1班;|||System.out.println(student1.className );|||*/|||System.out.println(student1.name);|||}||||||public static void main6(String[] args) {||||||Student student1 new Student(zhangsan,10,1234);|||//student1.className 1班;|||||||||Student.className 1班;||||||student1.show();||||||Student student2 new Student(lisi,12,12348);||||||student2.show();||||||}|![[Pasted image 20251209221127.png]]![[Pasted image 20251209221144.png]]我们尽量用Student.classname不用s1.classname![[Pasted image 20251209221338.png]]静态不依赖对象不需要对象的引用,内存都省了![[Pasted image 20251209221719.png]]class Date {private int x;private int y;private Date(int x, int y) {//提供一个构造方法this.x x;this.y y;}public int getX() {return x;}public void setX(int x) {this.x x;}public int getY() {return y;}public void setY(int y) {this.y y;}/* void main(String[] args) {Date d1 new Date(1, 2);Date d2 new Date(3, 4);*/}/*void main(String[] args) {Date d1 new Date(1,2);Date d2 new Date(3,4);}*///这个为什么可以public class Test {static void main(String[] args) {//这样子就不可以 Date d1new Date(1,2);// Date d1new Date(1,2);// System.out.println(Date.getX());要受不了了我问ai}}我来帮你分析图中的代码问题并解答“这个为什么可以”的疑问。## 问题分析### 1. 你的代码问题class Date {private int x;private int y;// 构造方法是 private 的private Date(int x, int y) { // ❌ 问题在这里this.x x;this.y y;}// ... 其他方法}public class Test {static void main(String[] args) {Date d1 new Date(1, 2); // ❌ 编译错误}}**错误原因**Date类的构造方法是private的这意味着- 只能在Date类**内部**创建对象- 在其他类如Test类中**不能**使用new Date(1, 2)### 2. 你看到的“可以”的情况你可能在某些IDE或工具中看到这种语法Date d1 new Date(x: 1, y: 2);这是某些IDE如IntelliJ IDEA的特性**不是标准的Java语法**- IDE可能会显示这种语法帮助理解参数含义- 但实际编译时Java会把它当作普通构造方法调用new Date(1, 2)- 如果构造方法是private这种写法**同样会编译失败**## 解决方案### 方案1将构造方法改为public推荐class Date {private int x;private int y;// 改为 publicpublic Date(int x, int y) { // ✅this.x x;this.y y;}// ... 其他方法}### 方案2在Date类内部创建对象class Date {private int x;private int y;private Date(int x, int y) {this.x x;this.y y;}// 提供静态工厂方法public static Date createDate(int x, int y) { // ✅return new Date(x, y);}}public class Test {static void main(String[] args) {d1 Date.createDate(1, 2); // ✅ 这样可以}}### 方案3完整的可运行代码class Date {private int x;private int y;// 1. 构造方法改为 publicpublic Date(int x, int y) {this.x x;this.y y;}public int getX() {return x;}public int getY() {return y;}}public class Test {public static void main(String[] args) {// 2. 正常创建对象Date d1 new Date(1, 2); // ✅ 可以Date d2 new Date(3, 4); // ✅ 可以// 3. 获取值System.out.println(d1: x d1.getX() , y d1.getY());System.out.println(d2: x2.getX() , y d2.getY());}}## 重要概念总结1. **构造方法的访问修饰符**- public任何类都可以调用- private只能在本类内部调用- protected同包或子类可以调用- 默认不写同包内可以调用2. **你困惑的根源**- 你看到的new Date(x: 1, y: 2)是**IDE的显示特性**不是标准Java语法- 实际Java编译器看到的是new Date(1, 2)- 因为构造方法是private所以**无论哪种写法都会失败**3. **正确的调用方式**// 标准Java语法Date d1 new Date(1, 2);// 某些IDE可能会显示为但实际相同Date d1 new Date(x: 1, y: 2);## 最终建议修改你的Date类将构造方法的private改为public// 修改这一行public Date(int x, int y) { // 把 private 改为 publicthis.x x;this.y y;}这样你的Test类中的new Date(1, 2)就可以正常工作了。哦明白了你是在问**第一个构造方法中this.name name的 name是从哪里来的**。java下载复制运行public Student(String name, int age, double score) {this.name name; // 将参数值赋给成员变量this.age age;this.score score;}## 参数来源**这些参数来自创建对象时的传参**java下载复制运行// 这里传入的参数会传给构造方法Student student1 new Student(lisi, 10, 98.5);// ↑ ↑ ↑ ↑// 对应构造方法参数// String name, int age, double score## 执行过程分解1. **创建对象时传入参数**java下载复制运行Student student1 new Student(lisi, 10, 98.5);2. **参数传递给构造方法**- 构造方法接收到name lisi, age 10, score 98.53. **构造方法内部赋值**java下载复制运行public Student(String name, int age, double score) {this.name lisi; // 参数 name 的值是 lisithis.age 10; // 参数 age 的值是 10this.score 98.5; // 参数 score 的值是 98.5}## 更清晰的写法用不同变量名java下载复制运行class Student {private String studentName; // 成员变量private int studentAge;private double studentScore;// 参数名和成员变量名可以不同public Student(String n, int a, double s) {studentName n; // 不需要 this因为变量名不同studentAge a;studentScore s;}}## 对比两种写法### 写法1用 this推荐java下载复制运行public Student(String name, int age, double score) {this.name name; // 左边的 name 是成员变量// 右边的 name 是参数}### 写法2用不同变量名java下载复制运行public Student(String n, int a, double s) {name n; // 不需要 this因为 name 是成员变量// n 是参数age a;score s;}## 实际使用java下载复制运行public class Test {public static void main(String[] args) {// 创建不同学生对象Student s1 new Student(张三, 20, 90.5);Student s2 new Student(李四, 19, 88.0);Student s3 new Student(王五, 21, 95.5);// 每个对象的初始化值都不同// s1: name张三, age20, score90.5// s2: name李四, age19, score88.0// s3: name王五, age21, score95.5}}**简单说**第一个构造方法中的 name、age、score是**参数**它们的值来自 new Student(...)时括号里传入的值。构造方法的作用就是把这些传入的值赋给对象的成员变量。那用this的是怎么写的和this.的区别是什么好的这是两个完全不同的概念## 1. this.和 this()的区别|对比项|this.|this()||---|---|---||**类型**​|引用指向当前对象|方法调用调用本类其他构造方法||**作用**​|访问当前对象的成员变量或方法|在一个构造方法中调用另一个构造方法||**位置**​|构造方法或实例方法的任何地方|必须是构造方法的第一行代码||**例子**​|this.name name;|this(张三, 20, 90.5);|## 2. 使用 this.的例子java下载复制运行class Student {private String name;private int age;public void setName(String name) {this.name name; // 这里的 this.name 是成员变量// 右边的 name 是参数}public void showInfo() {System.out.println(姓名 this.name); // 可以省略 thisSystem.out.println(年龄 this.age); // 推荐加上更清晰}}## 3. 使用 this()的例子//如果构造方法没有参数就不能使用### 情况1一个构造方法调用另一个构造方法java下载复制运行class Student {private String name;private int age;private double score;// 完整的构造方法public Student(String name, int age, double score) {this.name name;this.age age;this.score score;}// 只传名字使用默认年龄和分数public Student(String name) {this(name, 18, 60.0); // 调用上面的构造方法// 注意这必须是第一行}}### 情况2更复杂的例子java下载复制运行class Student {private String name;private int age;private double score;private String school;// 最完整的构造方法public Student(String name, int age, double score, String school) {this.name name;this.age age;this.score score;this.school school;}// 缺少学校默认为北京大学public Student(String name, int age, double score) {this(name, age, score, 北京大学);}// 只有名字和年龄public Student(String name, int age) {this(name, age, 60.0, 北京大学); // 分数默认60}// 只有名字public Student(String name) {this(name, 18, 60.0, 北京大学);}}静态成员方法//静态成员方法public static String getClassname() {return classname;}public class Test {static void main(String[] args) {Student student1new Student(lisi,10,98.5);student1.showClass();System.out.println(Student.getClassname());//静态大一级不依赖对象}}![[Pasted image 20251210171435.png]]![[Pasted image 20251210171716.png]]![[Pasted image 20251210171851.png]]public void showClass(){System.out.println(姓名this.name年龄this.age);getClassname();}//静态成员方法public static String getClassname() {return classname;}静态方法的特性1. 不属于某个具体的对象是类方法2. 可以通过对象调用也可以通过类名.静态方法名调用推荐第二个3. 不能在静态方法中访问任何非静态成员变量this)是非静态变量不能用![[Pasted image 20251210172328.png]]静态成员变量 的初始化1. 就地初始化直接赋值2. 通过get,set方法初始化3. 构造方法初始化//用的相对少4. 使用代码块初始化代码块静态代码块非静态代码块实例代码块构造代码块同步代码块![[Pasted image 20251210173409.png]]先执行的是静态代码块 再执行实例代码块然后才是构造方法![[Pasted image 20251210173704.png]]//实例代码块需要实例一个对象Student student1new Student(lisi,10,98.5);{this.nameshe;System.out.println(this.namethis.name);}//在类里面![[Pasted image 20251210202314.png]]//同个类型的就按顺序代码块是用发来初始化的#对象的打印![[Pasted image 20251210205308.png]]输出的是地址![[Pasted image 20251210205543.png]]

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询