Java对象的初始化
昨天写的代码被殷老师诟病了,因为太「丑陋」。
原来我的代码结构是这样的:
public class ColorRocognizer
{
.....
public static void main(String args[]) { class ColorX {
public String colorName = "";
public String colorStr = "";
}//两个成员变量。
}
ColorX[] c;
c = new ColorX[32];
for (int i = 0; i < 32; i++) {
c[i] = new ColorX();}
c[0].colorName = "RED";
c[0].colorStr = "FF0000";
c[1].colorName = "GREEN";
c[1].colorStr = "00FF00";
c[2].colorName = "BLUE";
c[2].colorStr = "0000FF";
c[3].colorName = "GREY";
c[3].colorStr = "808080";
c[4].colorName = "WHITE";
c[4].colorStr = "FFFFFF";
.......
}
后面还有更多的c的初始化。
也就是class->function->inner-class。因为我发现好像class里面不能直接放一个class,必须在一个function里面才能再放一个class。
殷老师觉得这样写太丑了。
他建议这样:
public class ColorRecognizerByMrYin {
private static final String [] colorName = {"RED","GREEN","BLUE","GREY","WHITE"};
private static final String [] colorStr = {"FF0000","00FF00","0000FF","808080","FFFFFF"};
public static void main(String args[]) {
ColorX[] c;
c = new ColorX[32];
for (int i = 0; i < 32; i++) {
c[i] = new ColorX(colorName[i],colorStr[i]);
}
}
}
class ColorX {
String colorName;//成员变量。
String colorStr;
public ColorX(String name, String str){//构造函数
colorName = name;//在这里初始化。
colorStr = str;
}
}
把ColorX写在了ColorRecognizor的外面(是否可以写在另外一个文件里呢?那样可能更好)。
用构造函数初始化的方法,确实非常值得学习,这样写也好看多了。但是有个问题,就是颜色(KEY)和颜色值(VALUE)不容易用肉眼一一对应,万一出错,难以寻找。
明天再说。
Java对象的初始化的更多相关文章
- java 对象的初始化流程(静态成员、静态代码块、普通代码块、构造方法)
一.java对象初始化过程 第一步,加载该类,一个java对象在初始化前会进行类加载,在JVM中生成Class对象.加载一个类会进行如下操作,下面给出递归描述.(关于Class对象详见反射 点击这里) ...
- java 对象的初始化过程
PersonDemo p=new PersonDemo("lisi",20);这句话都做了什么事情? 因为new用到了PersonDemo.class,所以会先找到PersonDe ...
- Java对象的初始化顺序
new一个对象时,该对象的初始化顺序如下 : 父类中的静态成员变量 父类中的静态代码块 子类中的静态成员变量 子类中的静态代码块 父类中的非静态变量 父类中的非静态代码块 父类构造函数 子类中的非静态 ...
- java对象的初始化过程和创建对象的几种方式
1.加载父类,加载父类的静态属性和静态代码块 2.加载子类,加载子类的静态属性和静态代码块 3.初始化父类中的非静态属性并赋初值,执行父类非静态代码块,执行父类构造. 4.初始化子类中的非静态属性并赋 ...
- Java对象延迟初始化的实现
一.什么是延迟初始化? 在Java多线程程序中,有时候需要采用延迟初始化来降低初始化类和创建对象的开销. 延迟初始化实际上就是:当我们要进行一些高开销的对象初始化操作时,只有在使用这些对象时才进行初始 ...
- JAVA对象的初始化过程
出处:http://blog.csdn.net/andrew323/article/details/4665379 下面我们通过两个例题来说明对象的实例化过程. 例1: 编译并运行该程序会有以下输 ...
- JNI_Z_08_创建Java对象
1.步骤 : (1).获取 jclass (2).获取 构造函数的 method id (方法的名称始终为"<init>") (3).创建Java对象的两种方式: (3 ...
- 解析Java类和对象的初始化过程
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...
- java中类的初始化和对象的初始化
静态的属于全局静态区,这个部分独立存在,不管是成员还是块,都是静态的,大家地位相等,先到先得. 然后是成员初始化,这个部分在类的构造函数前初始化,因为编译器(或者设计者)可能认为构造函数调用了这个成员 ...
随机推荐
- 【hibernate】hibernate和mybatis的比较
理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉 ...
- ubuntu 配置 django
安装 安装Apache sudo apt-get install apache2 安装Django 下载Django 安装mod_wsgi sudo apt-get install libapache ...
- 9.【nuxt起步】-scroll分页加载
面是单页,下面实现一个列表页和分页加载的例子 1.新建pages/list.vue <template> <div> 分页加载列表页面 </div> </te ...
- nopCommerce从无到有01-初探nopCommerce
nopCommerce框架的基本结构: 该结构可以参考DDD(领域驱动设计)模式. (注:上图源自他人文章,具体出处不祥,在此引用,感谢原创) nopcommerce官方地址:http://www.n ...
- git pull出现fatal: unable to access 'https://github.com/XXX/YYY.git'
用cmd 发现ping不同 github.com Ping不通,这时候,只需要在host文件里做些修改就可以,首先,定位到路径 C:\Windows\System32\drivers\etc 找到ho ...
- C 标准库 - <signal.h>
C 标准库 - <signal.h> 简介 signal.h 头文件定义了一个变量类型 sig_atomic_t.两个函数调用和一些宏来处理程序执行期间报告的不同信号. 库变量 下面是头文 ...
- 深度探究apk安装过程
一.先验知识 0.PcakageaManagerService版本号变化 1.概述 2.PackageManagerService服务启动流程 3. PackageManagerService入口 二 ...
- 怎样隐藏Windows7 系统保留分区
安装Windows7操作系统时须要预留出100MB左右的系统保留盘分区.在Windows7激活是必须给它分配盘符,否则无法将其成功激活,但是激活后该盘符永久地显示了出来,怎样将其隐藏掉呢? 1.隐藏前 ...
- innerHTML outerHTML innerText
迁移时间--2017年10月31日14:52:59 Author:Marydon UpdateTime--2017年1月15日20:33:03innerHTML,outerHTML与innerTe ...
- js 节点操作
添加和删除节点(HTML 元素). 创建新的 HTML 元素 如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素. 实例 <div id=& ...