构造器、对象数组、对象属性、静态实例块、this关键字
它的名字:构造函数、构造方法、初始化方法。
构造条件? 以后我们如何去使用构造器? 你觉得那些对象中那些属性值是必要的,你就在构造器中提出来(就是你如果想创造对象必须要传入我所需要的参数)
public class Dog {//这里就是一个简单的类、狗的类 String name; String chi; public Dog(String name, String chi) {//如果你想创建对象输入这两个参数 this.name = name; this.chi = chi; } }
构造器的创建:
1.构造器的名称与类名一致
2.构造器没有返回参数
3.当你的类中没有一个构造器的时候,java虚拟机会自动加入一个空参数的构造器
构造器是在创建完对象后调用
构造器就是一个方法,此方法没有返回值,并且与类名一致
构造器在创建完对象后 调用,调用完毕后,创建对象就结束
调用流程:
DD f=new DD();
1.先判断类是否加载了,如果没有加载,必须先加载
2.创建对象,分配对象的属性和方法内存
3.调用构造器
4.构造器调用完毕,返回对象给f
构造器重载:
与方法重载是一致的
对象数组:将对象放入数组中规定长度,并且可以通过循环赋值。
import java.util.Scanner; public class Dog {//这里就是一个简单的类、狗的类 String name; public static void main(String[] args) { Dog dog[] = new Dog[10];//这里只是创建对象数组 dog[0] = new Dog(); dog[0].name = "x"; System.out.println(dog[0]);//这里取出的只是数组地址 Scanner input = new Scanner(System.in); for (int i = 0; i < 10; i++) { dog[i] = new Dog();//只要是对象就是他玩出花来他都是要创建对象的 dog[i].name = input.next(); } System.out.println(dog[1].name); System.out.println(dog[3].name); } }
没有赋值的对象变量是什么值?:
null
null 表示变量没有指向任何内存
实例块:
每次创建对象 都会执行实例块, 在构造器之前执行
public class Dog { { System.out.println("我是实例块"); } }
静态块:
在类加载的时候调用的(只要加载类就会调用,无需加载对象他就会加载)
public class Dog { static { System.out.println("我是静态块"); } }
1.先加载类,将类的属性进行内存分配
2.然后执行静态块static和赋值(顺序执行)
3.加载实例属性
4.执行实例块和赋值(顺序执行)
5.构造器调用
6.返回创建好的对象内存
this关键字:
当前对象
Java允许不同区域的重名,在嵌套区域中重名,是就近原则
访问对象,只能访问到属性和方法
不能在静态成员中使用
1.是当前对象 this
2.可以用于转发构造器 this():
只能写在构造器代码的第一行上
一个构造器只能写一句
public class Dog {//构造器转发代码不知道用那 String name; String Dizhi; int age; public Dog(String name) { this(name, "哈哈", 10);//运行到这句 马上转发到构造器上 等构造器执行完毕后 在向下执行代码 } public Dog(String name, String dizhi) { this(name, dizhi, 10); } public Dog(String name, String dizhi, int age) { this.name = name; this.Dizhi = dizhi; this.age = age; } }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java总结 - ArrayDeque
这次来说一下ArrayDeque,我们先看一下他的类关系图,其中忽略掉了一些标记性接口 我们看一下类的定义public class ArrayDeque<E> extends AbstractCollection<E> implements Deque<E>, Cloneable, Serializable {...} 从中我们可以看到他实现了Deque接口,那么Deque是实现了Queue<E>接口,如下是两个接口中的部分方法Queue: boolean add(E e); boolean offer(E e); E remove(); E poll(); E element(); E peek(); Deq
- 下一篇
前端小报 - 201901 月刊
订阅 / 投稿:https://github.com/txd-team/monthly本期小编:x-cold (尹挚) 新闻快报 重磅消息:Github 宣布私有仓库免费,同期还上线了星标话题(topics) 的功能 2019 年伊始,GitHub 正式宣布开放无限制创建私有存储库,并开始提供统一的企业版 GitHub 服务,微软正在开始加速 toB 企业服务的布局。开发者们一片叫好声,可谓年度最佳的程序员福利了。 软件技术 B2B 公司Idera.inc收购 Travis CI Travis CI 将结合 Idera 公司其本身的数据库 / 开发者 / 测试等工具发挥更大的商业优势。不过使用免费版的社区同学也不用紧张,Travis CI 依然保证对开源软件免费的策略,并且其开源证书不会修改 (MIT),更多可以参考详细的官方公告。 需
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能