day06

构造器:

  在创建对象时,对对象进行初始化操作,绝大多数情况是对于属性初始化赋值

特点:

  1.方法名和类完全一致

  2.无返回值类型 连void也没有

  3.它只在创建对象的时候调用一次,不可以像普通方法随意调用

 

方法的重载以及package、import的用法

 1 package com.atguigu.javase.javabean;// package 机构类型.机构名称.项目名称.模块名称;
 2 //package aaa.bbb.ccc; //告诉编译器Computer类编译成.class文件后,保存到哪个包目录下.
 3                        // 如果代码中有package语句,则必须使用选项-d(directory)进行编译
 4                        // 一旦源文件中包含package语句,这个类的类名就必须包含完整包名(类的限定名称)
 5                        // aaa.bbb.ccc.Computer
 6 // 写一个类Computer
 7 // cpu,内存,磁盘,相应的get/set方法
 8 // 提供2-3个构造器
 9 // 提供一个getDetails()方法,返回String
10 public class Computer {
11     
12     private double cpu;
13     private int memory;
14     private int disk;
15     
16     public Computer() {
17         /*
18         cpu = 1.0;
19         memory = 1;
20         disk = 100;*/ 
21         //System.out.println("Computer()..."); //这样写不可以,它必须在有效行的第一行
22         // 可以通过一个间接的重载构造器的调用,实现三个属性的同时初始化
23         this(1.0);
24         System.out.println("Computer()...");
25     }
26     
27     public Computer(double cpu) {
28         /*
29         this.cpu = cpu;
30         memory = 1;
31         disk = 100;*/
32         this(cpu, 1);
33         System.out.println("Computer(double)...");
34     }
35     
36     public Computer(double cpu, int memory) {
37         /*
38         this.cpu = cpu;
39         this.memory = memory;
40         disk = 100;*/
41         this(cpu, memory, 100); //一行的调用相当于上面的三行
42         System.out.println("Computer(double, int)...");
43     }
44     
45     public Computer(double cpu, int memory, int disk) {
46         //this(); 这样会形成死循环,导致方法无限压栈,最终栈溢出
47         this.cpu = cpu;
48         this.memory = memory;
49         this.disk = disk;
50         System.out.println("Computer(double,int,int)...");
51     }
52     
53     public void setCpu(double cpu) {
54         this.cpu = cpu;
55     }
56     
57     public double getCpu() {
58         return cpu;
59     }
60     
61     public void setMemory(int memory) {
62         this.memory = memory;
63     }
64     
65     public int getMemory() {
66         return memory;
67     }
68     
69     public void setDisk(int disk) {
70         this.disk = disk;
71     }
72     
73     public int getDisk() {
74         return disk;
75     }
76     
77     public String getDetails() {
78         return "CPU:" + this.getCpu() + "GHz,内存:" + this.getMemory() + "G,硬盘:" + this.getDisk() + "G";
79     }
80     
81 }
 1 package com.atguigu.javase.test;
 2 
 3 // 告诉编译器,当前类中要使用的其他包中的类的路径
 4 import com.atguigu.javase.javabean.Computer;
 5 
 6 // 写一个测试类,调用不同的构造器,创建多个对象并打印输出
 7 public class ComputerTest {
 8     
 9     public static void main(String[] args) {
10         //当类中有import语句时,下面的限定名称就不必使用了
11         //com.atguigu.javase.javabean.Computer c1 = new com.atguigu.javase.javabean.Computer(); //必须使用限定名称,因为Computer类被包管理
12         Computer c1 = new Computer(); //不必使用限定名称,因为Computer类已经被导入了.
13         
14         System.out.println(c1.getDetails());
15         /*
16         Computer c2 = new Computer(2.0);
17         System.out.println(c2.getDetails());
18         Computer c3 = new Computer(3.0, 2);
19         System.out.println(c3.getDetails());
20         Computer c4 = new Computer(4.0, 4, 400);
21         System.out.println(c4.getDetails());
22         */
23     }
24     
25 }

数组以及for循环的搭配使用

 1 package com.atguigu.test;
 2 
 3 public class CharTest {
 4 /*
 5 创建一个char型数组36个元素,
 6 前26个保存大写字母,后10个保存0-9数字字符
 7 打印输出 
 8 */    
 9     public static void main(String[] args) {
10         char[] c = new char[36];
11         for(int i = 0; i < 26; i++) {
12             c[i] = (char)('a' + i);
13         }
14         for(int i = 0; i < 10; i++) {
15             c[i + 26] = (char)('0' + i);
16         }
17         for(int i = 0; i < c.length; i++) {
18             System.out.print(c[i] + " ");
19         }
20     }
21     
22 }

 

posted on 2017-02-09 19:27  何必从头  阅读(118)  评论(0编辑  收藏  举报

导航