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("程序执行结束...");

	}

}
时间: 2024-10-11 17:44:58

java新手笔记10 构造器的相关文章

我的java学习笔记(10)关于泛型数据列表

1.ArrayList是一个采用类型参数的泛型类. 2.为了指定数组列表保存的元素对象类型,需要用一对尖括号将类名括起来加在后面. ArryList<a> s = new ArrayList<a>();//右边尖括号里的参数可以省略 3.使用add方法将元素添加到数组列表中. s.add(a()); 4.数组列表管理着对象引用的一个内部数组.如果调用add且内部数组已经满了,数组列表就将自动的创建一个更大的数组,并将所有的对象从较小的数组中拷贝到较大的数组中. 5.还可以把出事容量

java新手笔记33 多线程、客户端、服务器

1.Mouse package com.yfs.javase; public class Mouse { private int index = 1; private boolean isLive = false; //跳出方法 同步锁 public synchronized void jump() { while(true) { if(!isLive ) { System.out.println("跳出第 " + index + " 田鼠"); //修改田鼠状态

java新手笔记15 多态

1.Animal类 package com.yfs.javase; public class Animal { public void cry() { System.out.println("动物叫..."); } } 2.Dog/Cat/Bird类 package com.yfs.javase; public class Dog extends Animal { public void cry() { System.out.println("汪 汪..."); }

java新手笔记16 面积

1.图形类 package com.yfs.javase; public class Shape { //计算面积方法 public double getArea() { System.out.println("计算面积"); return 0; } } 2.圆 package com.yfs.javase; public class Circle extends Shape { private double r; public Circle(double r) { this.r =

java新手笔记2

1.注释 /** doc注释 * 类说明信息 */ //声明类 文件名与类名一致 public class World {//类定界符 //声明方法 main方法 public static void main(String[] args) { System.out.println("World World!"); //System.out.println("welcome java world!"); //注释的代码不执行 单行注释 /* 多行注释 System.

java新手笔记3

1.包 2.运算符 public class Operator { public static void main(String[] args) { int a = 5; System.out.println("a = " + a); //a = -a; //+ - System.out.println("a = " + a); //+ 字符串链接 System.out.println("影分身" + "软件开发"); Sys

java新手笔记17 参数

package com.yfs.javase; public class ParamDemo { public static void main(String[] args) { int a = 3, b = 5; change(a,b); System.out.println("a = " + a + " b = " + b); Point p = new Point(); p.x = 10; p.y = 20; change(p); System.out.pri

java新手笔记5

1.进制转换 /* 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时, 低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: 20万到40万之间时,高于20万元的部分,可提成5%: 40万到60万之间时高于40万元的部分,可提成3%: 60万到100万之间时,高于60万元的部分,可提成1.5%, 高于100万元时,超过100万元的部分按1%提成, 从键盘输入当月利润I,求应发放奖金总数? */ import java

java新手笔记4

1.数组 import java.util.Random; public class ArrayDemo1 { public static void main(String[] args) { int a = 10; int b = 20;// //数组对象 创建10个变量 arr[0].arr[1].arr[2].arr[3]....arr[9] int[] arr = new int[10];//默认0 arr[0] = 35; arr[1] = 29; System.out.println