java新手笔记10 构造器
1.摇奖小程序
package com.yfs.javase; import java.io.IOException;
import java.nio.CharBuffer;
import java.util.Random; public class Demo1 { /**
* 模拟摇奖
*/
public static void main(String[] args) {
Random ran = new Random();
int[] a = new int[7]; System.out.println("开始摇奖:");
//产生奖号
for (int i = 0; i < a.length; i++) {
a[i] = ran.nextInt(33) + 1;
//找重复的数
for (int j = 0; j < i; j++) {
if(a[j] == a[i]) {
System.out.println("第 " + (i + 1) + "位的" + a[j] + "第" + (j + 1) +"数相同") ;
i--;//去重复数
}
}
} System.out.println("本次摇奖的结果:");
//输出奖号
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + "\t");
} } }
2.构造器
package com.yfs.javase; public class ConstructionDemo {
public int b = 10; /**
* 构造方法
* 1.如果类没有提供构造方法
* 编译时 系统自动添加无参的构造方法
* 2.构造方法的作用 实例化对象
* 3.类声明构造方法 系统不再提供构造方法
* 4.没有返回值类型声明 与类同名
* 5.实例化对象的形式由构造方法决定
*/
public ConstructionDemo() {
System.out.println("创建一个对象");
}
//构造方法重载
public ConstructionDemo(String msg) {
System.out.println("有参数的构造方法 " + msg);
} public ConstructionDemo(double a, int[] b) {
System.out.println("有2个参数的构造方法 " + a);
//执行输出
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]);
}
} // 普通方法
public void ConstructionDemo() {
System.out.println("有返回值的方法 。。。是否创建一个对象");
} public static void main(String[] args) {
ConstructionDemo cs = new ConstructionDemo();// 调用构造方法 } public void test(int a) {
System.out.println("call test() ....");
} }
3.构造器test
package com.yfs.javase; public class ConTest { public static void main(String[] args) {
ConstructionDemo csd = new ConstructionDemo();
csd.test(20);
//调用有参数的构造方法 实例化对象
ConstructionDemo c1 = new ConstructionDemo("大家好!"); //ConstructionDemo c2 = new ConstructionDemo(20);
ConstructionDemo c2 = new ConstructionDemo(20, new int[]{1,2,3});
} }
4.Person类
package com.yfs.javase;
//构造方法之间使用this调用
public class Person {
String name;
int age;
char sex;
boolean married; public Person() {
System.out.println("创建Person对象");
speak ();//调用其他方法
} public Person (String n) {
//Person();
//this();//this调用无参数的构造方法
this("王五", 25, '女', true);//必须是构造方法第一句代码
System.out.println("call Person(name)...");
}
//构造方法中初始化属性
public Person (String n, int a, char s, boolean m) {
name = n;//传入参数赋给属性
age = a;
sex = s;
married = m;
System.out.println("Person(String n, int a, char s, boolean m)");
} public void speak () {
System.out.println(name + " 你是人么?");
} public void sleep () {
System.out.println(name + " 睡觉了吗?");
speak();//调用其他方法
//Person();//其他方法不能调用构造方法
} }
5.Person类测试1
package com.yfs.javase; public class PersonTest { public static void main(String[] args) {
Person p1 = new Person("张三", 20, '男', false);
System.out.println(p1.name);
System.out.println(p1.age);
System.out.println(p1.sex);
System.out.println(p1.married);
p1.speak();
p1.sleep(); Person p2 = new Person(); } }
6.Person类2
package com.yfs.javase; public class Person {
String name;
int age;
char sex;
boolean married; public Person() {
System.out.println("创建Person对象");
} public Person (String name) {//参数名与属性同名 name局部变量
this.name = name;//属性 this代表当前对象
System.out.println("call Person("+name+")...");
} public void speak () {
System.out.println(this.name + " 你真的是人吗?");
System.out.println(this);
} public void sleep () {
System.out.println(name + " 睡觉了吗?");
}
//销毁对象是调用的方法
@Override
protected void finalize() throws Throwable {
System.out.println(name + " 对象被销毁...");
}
}
7.Person类2测试(垃圾对象回收)
package com.yfs.javase; public class PersonTest1 { public static void main(String[] args) { Person p1 = new Person("李四");//对象生命从new
p1.speak(); Person p2 = new Person();
p2.speak(); Person p3 = null;
p3 = new Person("张三"); p3 = null;//生命结束
System.gc();//强制回收 System.out.println("程序执行结束..."); } }
java新手笔记10 构造器的更多相关文章
- JAVA自学笔记10
JAVA自学笔记10 1.形式参数与返回值 1)类名作为形式参数(基本类型.引用类型) 作形参必须是类的对象 2)抽象类名作形参 需要该抽象类的子类对象,通过多态实现 3)接口名为形参 需要的是该接口 ...
- java新手笔记33 多线程、客户端、服务器
1.Mouse package com.yfs.javase; public class Mouse { private int index = 1; private boolean isLive = ...
- java新手笔记32 jdk5新特性
1.for package com.yfs.javase; import java.awt.Color; import java.util.Calendar; import java.util.Has ...
- java新手笔记26 Frame
0.Calculater package com.yfs.javase; import java.awt.BorderLayout; import java.awt.Button; import ja ...
- java新手笔记17 参数
package com.yfs.javase; public class ParamDemo { public static void main(String[] args) { int a = 3, ...
- java新手笔记16 面积
1.图形类 package com.yfs.javase; public class Shape { //计算面积方法 public double getArea() { System.out.pri ...
- java新手笔记15 多态
1.Animal类 package com.yfs.javase; public class Animal { public void cry() { System.out.println(" ...
- java新手笔记5 类
1.进制转换 /* 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时, 低于10万元的部分按10%提成,高于10万元的部分,可提成7.5 ...
- java新手笔记4 数组
1.数组 import java.util.Random; public class ArrayDemo1 { public static void main(String[] args) { int ...
随机推荐
- 2013 ACM区域赛长沙 H zoj 3733 (hdu 4798) Skycity
题意:一个圆台,底面和顶面半径分别为R,r,然后高度为H,一共F层,每层高度一样,然后要在每层的天花板上贴方格玻璃,方格玻璃要满足以下几个条件: 方格玻璃面积不能小于S,且方格玻璃要围成一个正多边形, ...
- 【Java基础】static关键字的理解
修饰范围: 可以修饰成员变量和成员方法.静态的特点: A:随着类的加载而加载 B:优先于对象存在 C:被类的所有对象共享 这其实也是我们判断该不该使用静态的依据. 举例:饮水机和水杯的问题思考可通过类 ...
- 为静态Checkbox动态地添加checked属性
1.ASP.NET HTML Code: 嵌套在repeater中 " ? "checked" : "" %> /> *** 关键代码: ...
- MVC client validation after PartialView loaded via Ajax MVC3中 弹出 Dialog时候 提交的时候 使用 Jquery 不验证 form表单 的解决办法
I came across this scenario whereby my main View uses Ajax posts to retrieve PartialViews and delive ...
- Polya定理
http://www.cnblogs.com/wenruo/p/5304698.html 先看 Polya定理,Burnside引理回忆一下基础知识.总结的很棒. 一个置换就是集合到自身的一个双射,置 ...
- 由.Net类库提供的农历计算(C#农历)-获取当前日期的农历日期
; i <= chineseDate.GetMonthsInYear(DateTime.Now.Year); i++) { Console.W ...
- C#- 泛型去除重复项
今天被这个问题纠结了好一会.如何去除重复项,我遇到的问题是,在判断是否重复的条件是有两个,一个信息来源,一个是信息标题. 最后使用了哈希后很好的解决,感觉挺高效的.代码贴下,做一个备忘 //防止群发, ...
- PowerDesigner建数据库模型增加自定义扩展属性
PowerDesigner自7.x新增加一个特性,就是允许用户通过扩展模型的方式扩展模型的属性,但到底怎用一直搞不清楚.今天和同事商量准备直接在程序的Metadata信息实现上直接使用pdm时,我们需 ...
- android FakeWindow的小应用大用途
android FakeWindow的小应用大用途 在windowmanager里面有一个FakeWindow,细致一看也就是一个透明的应用覆盖到屏幕的最前端,这样有什么优点呢?首先我们还是从应用的需 ...
- Sql Server2005 Transact-SQL 窗口函数(OVER)
1.简介: SQL Server 2005中的窗口函数帮助你迅速查看不同级别的聚合,通过它可以非常方便地累计总数.移动平均值.以及执行其它计算.窗口函数功能非常强大,使用起来也十分容易.可以使用这个技 ...