-Java基础-构造器

1.构造器

构造器就是类创建对象的初始化方法。它的名字与类名相同。 假设没有写有构造器的情况下,虚拟机会自动加上一个没有参数的构造器,如果【学Java,到凯哥学堂kaige123.com】写有构造器,那么虚拟机就不会在加上构造器了。

publicclassTest1{publicTest1(){System.out.println("我是构造器!");}}

2.构造器重载

构造器就是一个方法,所以它和普通的方法一样也可以做方法重载,换句话说就是构造器的重载。 和方法重载一样构造器重载就是多个一样名字参数类型和参数的个数不同的多个构造器。

publicclassTest1{publicTest1(){System.out.println("先脱去衣服");}publicTest1(String name){}publicTest1(intname){}}

2.实例块 实例块就是一个划分的代码区域。{ 代码 } 1.它是在构造器之前执行。 2.它和属性初始化一同执行。 3.一个类中可以有很多个实例块。

执行过程是按照顺序从上到下执行。

publicclassTest3{{System.out.println("我是实例块!");}}

3.this this用3种用法: 1.表示当前的对象。 假设在一个方法中传入的参数名为a1,在实例中也有一个变量叫做a1.如果方法中的参数a1想赋值给类中的a1。则就需要到this关键字。因为java如果遇到同名的变量就会默认用和你最近的参数。

publicclassTest4 {String name;// 重名了 使用的规则是 就近原则publicTest4(String name){this.name = name;}}2.当前对象返回publicTest4getTest4(){returnthis;}

3.构造器转发

注意:静态属性和静态方法参数重名怎么办? 这时就不能用this了。因为this是当前对象。 既然是静态成员那就直接类名点属性名就可以了。 例如:

staticStringaddress;staticvoidmethod(Stringaddress) {Test4.address = address;}

4.静态块 static{} 是类加载的时候和静态属性一起执行的。也是按顺序从上往下执行。

5.类的加载 1.在声明静态属性但并没有使用属性时,不会对类进行加载。 使用静态属性时才会对类进行加载。 2.声明或使用常量时都不会对类进行加载。 因为常量的内存【学Java,到凯哥学堂kaige123.com】和类成员的内存不在同一内存内。 3.使用静态方法或new肯定会加载类。 4.//加载类 class.forName( 包名.类名 )

怪题:

main方法中,new Test1();,然而Test1类中又new Test1,因为new对象的时候肯定会加载类,然而加载类其实就是加载静态属性,所以这就成了死循环。报出方法嵌套调用溢出的错误。 java.lang.StackOverflowError

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,837评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,248评论 19 139
  • 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互...
    凯哥学堂阅读 292评论 0 0
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,152评论 0 62
  • 我们上次提到苏格拉底,苏格拉底在这些世界里是有名的丑,但每一个学生跟他接触以后都觉得这个老师真美,为什么?因为他反...
    小食光阅读 478评论 2 0