2024/3/1 Java动手动脑练习

复制代码
 1 public class Main {
 2     public static void main(String[] args) {
 3         Foo obj1=new Foo();
 4         Foo obj2=new Foo();
 5         System.out.println(obj1==obj2);
 6     }
 7     static class Foo{
 8         Foo(){
 9         }
10         int value = 100;
11     }
12 }
复制代码

打印结果为false,因为new出来的对象都是地址,==号比较的是地址值,两个的地址当然不一样

复制代码
 1 public class Main {
 2     public static void main(String[] args) {
 3         Foo obj1=new Foo();
 4         Foo obj2=new Foo();
 5         System.out.println(obj1==obj2);
 6     }
 7     static class Foo{
 8         int value;
 9         public Foo(int a){
10          
11             value=a;
12         }
13     }
14 }
复制代码

报错是因为,我们自己写的有参构造函数会将虚拟机自带的无参构造函数覆盖,导致主函数无法定义一个无参的对象

复制代码
 1 public class Main {
 2     public static void main(String[] args) {
 3         Foo obj=new Foo();
 4         System.out.println(obj.filed);//100
 5         obj=new Foo(300);
 6         System.out.println(obj.filed);//300
 7     }
 8     static class Foo{
 9         {
10             filed=200;
11         }
12         public int filed=100;
13         public Foo(int a){
14             this.filed=a;
15         }
16         public Foo(){
17         }
18     }
19 }
复制代码

在进行赋初值的时候,会先调用与参数相匹配的构造函数,有参调用有参,无参调用无参

posted @   新晋软工小白  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示