萌新卷妹带你从头复习JavaSE-类与对象2
萌新卷妹带你从头复习JavaSE-类与对象2
✨欢迎关注🖱点赞🎀收藏⭐留言✒
🔮本文由京与旧铺原创,csdn首发!
😘系列专栏:java学习
💻首发时间:🎞2022年10月17日🎠
🎨你做三四月的事,八九月就会有答案,一起加油吧
🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦
🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲
💬推荐一款模拟面试、刷题神器👉[点击进入网站
🔮6.代码块
🎃6.1普通代码块
普通代码块就是在方法中使用花括号定义的代码块,例如:
public class ClassCreat {
public static void main(String[] args) {
{
int a = 12;
int b = 48;
String name = "weijianhuawen";
}
}
}
复制代码

🎃6.2构造代码块
构造代码块为类中方法外定义的代码块,也叫实例代码块,一般用来初始化成员变量(我觉得多此一举),例如:
class CodeBlock {
private int c;
private int d;
public int sum;
//构造代码块 or 实例代码块
{
this.c = 10;
this.d = 12;
sum = this.add(c, d);
}
public int add(int x, int y) {
return x + y;
}
}
复制代码
❗️注意:构造(实例)代码块优先于构造函数执行。
🎃6.3静态代码块
使用static修饰的构造代码块称为静态代码块,它一般用来初始化静态成员变量的属性。它和类储存在一起,存储在方法区。
class CodeBlock {
public static int a;
public static String name;
//静态代码块
static {
a = 18;
name = "未见花闻";
}
}
复制代码
❗️注意:
- 静态代码块不管生成多少个对象,其只会执行一次,且是最先执行的。
- 静态代码块执行完毕后, 实例代码块(构造代码块)执行,再然后是构造函数执行。
🔮7.对象
🎃7.1输出对象数据
当我们对类的引用进行打印时会输出什么呢?我们来试一试:
class Student {
public String name;
public String sex;
public int age;
public String id;
public String major;
public void getName() {
System.out.println(name);
}
public void getMajor() {
System.out.println(major);
}
}
public class ClassCreat {
public static void main(String[] args) {
Student sc = new Student();
sc.name = "weijianhuawen";
sc.sex = "man";
sc.age = 1;
sc.id = "5201314";
sc.major = "computer";
System.out.println(sc);
}
}
复制代码
为什么输出的不是地址呢?因为Java是具有很强的安全性,它把地址进行了处理,使用 toString方法返回一个字符串,这个打印的数据正是这个字符串。至于为什么是toString方法,我们来溯源一下println方法的真面目: 按住ctrl点击进入println方法:
通过溯源,我们就知道了对引用进行打印会输出类名@该引用的哈希值这样一个字符串。 我们试一试自己写上这样一个方法,方法名返回值均与toString方法相同。 假如我写成这样,然后放在Student类当中:
public String toString() {
return "未见花闻";
}
复制代码
我们再来运行一下这个程序:
class Student {
public String name;
public String sex;
public int age;
public String id;
public String major;
public String toString() {
return "未见花闻";
}
public void getName() {
System.out.println(name);
}
public void getMajor() {
System.out.println(major);
}
}
public class ClassCreat {
public static void main(String[] args) {
Student sc = new Student();
sc.name = "weijianhuawen";
sc.sex = "man";
sc.age = 1;
sc.id = "5201314";
sc.major = "computer";
System.out.println(sc);
}
}
复制代码
得到了我自己所写toString所返回的字符串,这其实是对方法进行了重写,如果子类中的方法与父类中的方法名返回值参数及其参数个数相同,就构成了方法的重写,会优先执行子类的方法(该内容在后续博客关于继承中详细介绍,这里先了解)。我所写的这个类Student是子类,原来toString方法是在Object类中的,这个Object类就是父类,所以会优先执行我所写的toString方法。
在idea编译器中,能够自动生成toString方法,可以选择性的输出一个类中成员变量的数据。 与自动生成Getter与Setter方法类似:
自动生成的代码:
再来运行一下程序:
class Student {
public String name;
public String sex;
public int age;
public String id;
public String major;
@Override
public String toString() {
return "Student{" +
"name='" + name + ''' +
", sex='" + sex + ''' +
", age=" + age +
", id='" + id + ''' +
", major='" + major + ''' +
'}';
}
public void getName() {
System.out.println(name);
}
public void getMajor() {
System.out.println(major);
}
}
public class ClassCreat {
public static void main(String[] args) {
Student sc = new Student();
sc.name = "weijianhuawen";
sc.sex = "man";
sc.age = 1;
sc.id = "5201314";
sc.major = "computer";
System.out.println(sc);
}
}
复制代码

🎃7.2匿名对象
所谓的匿名对象,就是不使用一个类的引用变量,而是直接调用,那么生成的这个对象是一次性的,只能进行一次访问,因为访问一次之后你就找不到它了。
- 没有引用的对象称为匿名对象.
- 匿名对象只能在创建对象时使用.
- 如果一个对象只用一次, 后面不需要用了, 可以考虑使用匿名对象.
class AnonymousObject {
public int a;
public AnonymousObject() {
this.a = 188;
}
}
public class ClassCreat {
public static void main(String[] args) {
System.out.println(new AnonymousObject().a);
}
}
复制代码
- 点赞
- 收藏
- 关注作者
评论(0)