黑马程序员_JavaSE学习总结第10天_面向对象5

------- android培训、java培训、期待与您交流! ---------- 

10.01 运动员和教练案例分析

教练和运动员案例:运动员分乒乓球运动员和篮球运动员,教练分乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。

分析:

 

10.02 运动员和教练案例实现

  1 //定义一个说英语的接口
  2 interface SpeakEnglish
  3 {
  4     //说英语
  5     public abstract void speak();
  6 }
  7
  8 //定义人的抽象类
  9 abstract class Person
 10 {
 11     private String name;
 12     private int age;
 13
 14     public Person() {}
 15
 16     public Person(String name,int age)
 17     {
 18         this.name = name;
 19         this.age = age;
 20     }
 21
 22     public String getName()
 23     {
 24         return name;
 25     }
 26
 27     public void setName(String name)
 28     {
 29         this.name = name;
 30     }
 31
 32     public int getAge()
 33     {
 34         return age;
 35     }
 36
 37     public void setAge(int age)
 38     {
 39         this.age = age;
 40     }
 41
 42     //睡觉
 43     public void sleep()
 44     {
 45         System.out.println("人都是要睡觉的");
 46     }
 47
 48     //吃饭
 49     public abstract void eat();
 50 }
 51
 52 //定义运动员抽象类
 53 abstract class Player extends Person
 54 {
 55     public Player() {}
 56
 57     public Player(String name,int age)
 58     {
 59         super(name,age);
 60     }
 61
 62     //学习
 63     public abstract void study();
 64 }
 65
 66 //定义教练抽象类
 67 abstract class Coach extends Person
 68 {
 69     public Coach() {}
 70
 71     public Coach(String name,int age)
 72     {
 73         super(name,age);
 74     }
 75
 76     //教学
 77     public abstract void teach();
 78 }
 79
 80 //定义乒乓球运动员具体类
 81 class PingPangPlayer extends Player implements SpeakEnglish
 82 {
 83     public PingPangPlayer(){}
 84
 85     public PingPangPlayer(String name,int age)
 86     {
 87         super(name,age);
 88     }
 89
 90     //吃
 91     public void eat()
 92     {
 93         System.out.println("乒乓球运动员吃大白菜,喝小米粥");
 94     }
 95
 96     //学习
 97     public void study()
 98     {
 99         System.out.println("乒乓球运动员学习如何发球和接球");
100     }
101
102     //说英语
103     public void speak()
104     {
105         System.out.println("乒乓球运动员说英语");
106     }
107 }
108
109 //定义篮球运动员具体类
110 class BasketballPlayer extends Player
111 {
112     public BasketballPlayer(){}
113
114     public BasketballPlayer(String name,int age)
115     {
116         super(name,age);
117     }
118
119     //吃
120     public void eat()
121     {
122         System.out.println("篮球运动员吃牛肉,喝牛奶");
123     }
124
125     //学习
126     public void study()
127     {
128         System.out.println("篮球运动员学习如何运球和投篮");
129     }
130 }
131
132 //定义乒乓球教练具体类
133 class PingPangCoach extends Coach implements SpeakEnglish
134 {
135     public PingPangCoach(){}
136
137     public PingPangCoach(String name,int age)
138     {
139         super(name,age);
140     }
141
142     //吃
143     public void eat()
144     {
145         System.out.println("乒乓球教练吃小白菜,喝大米粥");
146     }
147
148     //教
149     public void teach()
150     {
151         System.out.println("乒乓球教练教如何发球和接球");
152     }
153
154     //说英语
155     public void speak()
156     {
157         System.out.println("乒乓球教练说英语");
158     }
159 }
160
161 //定义篮球教练具体类
162 class BasketballCoach extends Coach
163 {
164     public BasketballCoach(){}
165
166     public BasketballCoach(String name,int age)
167     {
168         super(name,age);
169     }
170
171     //吃
172     public void eat()
173     {
174         System.out.println("篮球教练吃羊肉,喝羊奶");
175     }
176
177     //教
178     public void teach()
179     {
180         System.out.println("篮球教练教如何运球和投篮");
181     }
182 }

10.03 运动员和教练案例测试

  1 //定义一个说英语的接口
  2 interface SpeakEnglish
  3 {
  4     //说英语
  5     public abstract void speak();
  6 }
  7
  8 //定义人的抽象类
  9 abstract class Person
 10 {
 11     private String name;
 12     private int age;
 13
 14     public Person() {}
 15
 16     public Person(String name,int age)
 17     {
 18         this.name = name;
 19         this.age = age;
 20     }
 21
 22     public String getName()
 23     {
 24         return name;
 25     }
 26
 27     public void setName(String name)
 28     {
 29         this.name = name;
 30     }
 31
 32     public int getAge()
 33     {
 34         return age;
 35     }
 36
 37     public void setAge(int age)
 38     {
 39         this.age = age;
 40     }
 41
 42     //睡觉
 43     public void sleep()
 44     {
 45         System.out.println("人都是要睡觉的");
 46     }
 47
 48     //吃饭
 49     public abstract void eat();
 50 }
 51
 52 //定义运动员抽象类
 53 abstract class Player extends Person
 54 {
 55     public Player() {}
 56
 57     public Player(String name,int age)
 58     {
 59         super(name,age);
 60     }
 61
 62     //学习
 63     public abstract void study();
 64 }
 65
 66 //定义教练抽象类
 67 abstract class Coach extends Person
 68 {
 69     public Coach() {}
 70
 71     public Coach(String name,int age)
 72     {
 73         super(name,age);
 74     }
 75
 76     //教学
 77     public abstract void teach();
 78 }
 79
 80 //定义乒乓球运动员具体类
 81 class PingPangPlayer extends Player implements SpeakEnglish
 82 {
 83     public PingPangPlayer(){}
 84
 85     public PingPangPlayer(String name,int age)
 86     {
 87         super(name,age);
 88     }
 89
 90     //吃
 91     public void eat()
 92     {
 93         System.out.println("乒乓球运动员吃大白菜,喝小米粥");
 94     }
 95
 96     //学习
 97     public void study()
 98     {
 99         System.out.println("乒乓球运动员学习如何发球和接球");
100     }
101
102     //说英语
103     public void speak()
104     {
105         System.out.println("乒乓球运动员说英语");
106     }
107 }
108
109 //定义篮球运动员具体类
110 class BasketballPlayer extends Player
111 {
112     public BasketballPlayer(){}
113
114     public BasketballPlayer(String name,int age)
115     {
116         super(name,age);
117     }
118
119     //吃
120     public void eat()
121     {
122         System.out.println("篮球运动员吃牛肉,喝牛奶");
123     }
124
125     //学习
126     public void study()
127     {
128         System.out.println("篮球运动员学习如何运球和投篮");
129     }
130 }
131
132 //定义乒乓球教练具体类
133 class PingPangCoach extends Coach implements SpeakEnglish
134 {
135     public PingPangCoach(){}
136
137     public PingPangCoach(String name,int age)
138     {
139         super(name,age);
140     }
141
142     //吃
143     public void eat()
144     {
145         System.out.println("乒乓球教练吃小白菜,喝大米粥");
146     }
147
148     //教
149     public void teach()
150     {
151         System.out.println("乒乓球教练教如何发球和接球");
152     }
153
154     //说英语
155     public void speak()
156     {
157         System.out.println("乒乓球教练说英语");
158     }
159 }
160
161 //定义篮球教练具体类
162 class BasketballCoach extends Coach
163 {
164     public BasketballCoach(){}
165
166     public BasketballCoach(String name,int age)
167     {
168         super(name,age);
169     }
170
171     //吃
172     public void eat()
173     {
174         System.out.println("篮球教练吃羊肉,喝羊奶");
175     }
176
177     //教
178     public void teach()
179     {
180         System.out.println("篮球教练教如何运球和投篮");
181     }
182 }
183 class Demo
184 {
185     public static void main(String[] args)
186     {
187         //测试运动员(乒乓球运动员和篮球运动员)
188         //乒乓球运动员
189         PingPangPlayer ppp = new PingPangPlayer();
190         ppp.setName("王浩");
191         ppp.setAge(33);
192         System.out.println(ppp.getName()+"---"+ppp.getAge());
193         ppp.eat();
194         ppp.sleep();
195         ppp.study();
196         ppp.speak();
197         System.out.println("----------------");
198
199         //篮球运动员
200         BasketballPlayer bp = new BasketballPlayer();
201         bp.setName("姚明");
202         bp.setAge(34);
203         System.out.println(bp.getName()+"---"+bp.getAge());
204         bp.eat();
205         bp.sleep();
206         bp.study();
207         //bp.speak(); //没有该方法
208     }
209 }

运行结果:

王浩---33
乒乓球运动员吃大白菜,喝小米粥
人都是要睡觉的
乒乓球运动员学习如何发球和接球
乒乓球运动员说英语
----------------
姚明---34
篮球运动员吃牛肉,喝牛奶
人都是要睡觉的
篮球运动员学习如何运球和投篮

10.04 类名作为形式参数

形式参数和返回值问题

形式参数:基本类型、引用类型(类、抽象类、接口)

返回值类型:基本类型、引用类型(类、抽象类、接口)

例:

 1 class Student
 2 {
 3     public void study()
 4     {
 5         System.out.println("好好学习");
 6     }
 7 }
 8 class StudentTest
 9 {
10     //形式参数是一个类
11     public void method(Student s)
12     {
13         s.study();
14     }
15 }
16 class Demo
17 {
18     public static void main(String[] args)
19     {
20         StudentTest st = new StudentTest();
21         Student s = new Student();
22 //需要的是该类的对象
23         st.method(s);
24     }
25 }

运行结果:

好好学习

10.05 抽象类名作为形式参数

例:

 1 abstract class Person
 2 {
 3     public abstract void study();
 4 }
 5
 6 class Student extends Person
 7 {
 8     public void study()
 9     {
10         System.out.println("好好学习");
11     }
12 }
13 class PersonTest
14 {
15     //形式参数是一个抽象类
16     public void method(Person p)
17     {
18         p.study();
19     }
20 }
21 class Demo
22 {
23     public static void main(String[] args)
24     {
25         PersonTest pt = new PersonTest();
26         Person p = new Student();
27         //需要该抽象类的子类对象
28         pt.method(p);
29     }
30 }

运行结果:

好好学习

10.06 接口名作为形式参数

例:

 1 interface Love
 2 {
 3     public abstract void love();
 4 }
 5 class Teacher implements Love
 6 {
 7     public void love()
 8     {
 9         System.out.println("老师爱学生");
10     }
11 }
12 class LoveTest
13 {
14     //形式参数是一个接口
15     public void method(Love l)
16     {
17         l.love();
18     }
19 }
20 class Demo
21 {
22     public static void main(String[] args)
23     {
24         LoveTest lt = new LoveTest();
25         Love l = new Teacher();
26         //需要该接口的实现类对象
27         lt.method(l);
28     }
29 }

运行结果:

老师爱学生

10.07 类名作为返回值类型

例:

 1 class Student
 2 {
 3     public void study()
 4     {
 5         System.out.println("好好学习");
 6     }
 7 }
 8 class StudentTest
 9 {
10     //返回值是一个类
11     public Student getStudent()
12     {
13         //真实返回的是该类的对象
14         return new Student();
15     }
16 }
17 class Demo
18 {
19     public static void main(String[] args)
20     {
21         StudentTest st = new StudentTest();
22         Student s = st.getStudent();
23         s.study();
24     }
25 }

10.08 抽象类名作为返回值类型

例:

 1 abstract class Person
 2 {
 3     public abstract void study();
 4 }
 5 class Student extends Person
 6 {
 7     public void study()
 8     {
 9         System.out.println("好好学习");
10     }
11 }
12 class PersonTest
13 {
14     //返回值是一个抽象类
15     public Person getPerson()
16     {
17         //真实返回的是抽象类的子类对象
18         return new Student();
19     }
20 }
21 class Demo
22 {
23     public static void main(String[] args)
24     {
25         PersonTest pt = new PersonTest();
26         Person p = pt.getPerson();
27         p.study();
28     }
29 }

10.09 接口名作为返回值类型

例:

 1 interface Love
 2 {
 3     public abstract void love();
 4 }
 5 class Teacher implements Love
 6 {
 7     public void love()
 8     {
 9         System.out.println("老师爱学生");
10     }
11 }
12 class LoveTest
13 {
14     //返回值是一个接口
15     public Love getLove()
16     {
17         //真实返回的是该接口的实现类对象
18         return new Teacher();
19     }
20 }
21 class Demo
22 {
23     public static void main(String[] args)
24     {
25         LoveTest lt = new LoveTest();
26         Love l = lt.getLove();
27         l.love();
28     }
29 }

10.10 链式编程

例:

 1 class Student
 2 {
 3     public void study()
 4     {
 5         System.out.println("好好学习");
 6     }
 7 }
 8 class StudentTest
 9 {
10     public Student getStudent()
11     {
12         return new Student();
13     }
14 }
15 class Demo
16 {
17     public static void main(String[] args)
18     {
19         //链式编程,每次调用方法完毕后返回的是一个对象
20         new StudentTest().getStudent().study();
21     }
22 }

10.11 package关键字的概述及作用

包的概述:其实就是文件夹

作用:对类进行分类管理

包的划分:

例:学生的增加,删除,修改,查询和老师的增加,删除,修改,查询

基本的划分:

按照功能分

cn.itcast.add(AddStudent,AddTeacher)

cn.itcast.delete(DeleteStudent,DeleteTeacher)

cn.itcast.update(UpdateStudent,UpdateTeacher)

cn.itcast.find(FindStudent,FindTeacher)       

按照模块分

cn.itcast.teacher(AddTeacher,DeleteTeacher,UpdateTeacher,FindTeacher)

cn.itcast.student(AddStudent,DeleteStudent,UpdateStudent,FindStudent)           

10.12 包的定义及注意事项

定义包的格式:package 包名; 多级包用.分开即可

注意事项:

1.package语句必须是程序的第一条可执行的代码

2.package语句在一个java文件中只能有一个

3.如果没有package,默认表示无包名

10.13 带包的类编译和运行

手动式

1:javac编译当前类文件

2:手动建立包对应的文件夹

3:把1步骤的class文件放到2步骤的最终文件夹下

4:通过java命令执行。

注意:需要带包名称执行

例:

1 package cn.itcast;
2 class Demo
3 {
4     public static void main(String[] args)
5     {
6         System.out.println("hello world");
7     }
8 }

运行:

自动式

1:javac编译的时候带上-d即可

例:javac -d . HelloWorld.java (-d后面跟的是目录, .表示当前目录)

2:通过java命令执行。需要带包名称执行。

10.14 不同包下类之间的访问

例:

定义两个类:Demo,Test。

Demo:测试方法(main)

Test:求和方法(sum)

运行步骤如下:

 

10.15 import关键字的概述和使用

导包概述:不同包下的类之间的访问,每次使用不同包下的类的时候,都需要加包的全路径。比较麻烦。这个时候,java就提供了导包的功能。

导包格式:import 包名;

注意:这种方式导入是到类的名称。虽然可以最后写*,但是不建议。使用哪个类就导入哪个类。

例:

面试题:package,import,class有没有顺序关系?

有,package>import>class

package:只能有一个

import:可以有多个

class:可以有多个,建议只写一个

10.16 四种权限修饰符

10.17 类及其组成所使用的常见修饰符

权限修饰符:public、protected、默认的、private

状态修饰符:static、final

抽象修饰符:abstract

 

1.类:默认,public、final、abstract。其中使用public居多

2.成员变量:四种权限修饰符均可,final、static。其中使用private居多

3.构造方法:四种权限修饰符均可,其他不可以。其中使用public居多

4.成员方法:四种权限修饰符均可,fianl、static、abstract。其中使用public居多

 

10.18 内部类概述和访问特点

把类定义在其他类的内部,这个类就被称为内部类。

例:在类A中定义了一个类B,类B就是内部类。

内部类的访问特点:

内部类可以直接访问外部类的成员,包括私有。

外部类要访问内部类的成员,必须创建对象。

例:

 1 class Outer
 2 {
 3     private int num = 10;
 4 //内部类
 5     class Inner
 6     {
 7         public void show()
 8         {
 9             //内部类可以直接访问外部类的成员,包括私有
10             System.out.println("show run..."+num);
11         }
12     }
13     public void method()
14     {
15         //外部类要访问内部类的方法必须创建内部类的对象
16         Inner in = new Inner();
17         in.show();
18     }
19 }

10.19 内部类分类及成员内部类的使用

按照内部类在类中定义的位置不同,可以分为如下两种格式:

在成员位置称为成员内部类

在局部位置称为局部内部类

例:

 1 class Outer
 2 {
 3     //成员内部类
 4     class Inner
 5     {
 6     }
 7     public void method()
 8     {
 9         //局部内部类
10         class Inner
11         {
12         }
13     }
14 }

外界创建成员内部类对象的格式:

外部类名.内部类名对象名 = 外部类对象.内部类对象;

例:

 1 class Outer
 2 {
 3     private int num = 10;
 4     //成员内部类
 5     class Inner
 6     {
 7         public void show()
 8         {
 9             System.out.println(num);
10         }
11     }
12 }
13 class Demo
14 {
15     public static void main(String[] args)
16     {
17         //访问Inner类的show()方法
18      //外部类名.内部类名 对象名 = 外部类对象.内部类对象;
19         Outer.Inner oi = new Outer().new Inner();
20         oi.show();
21     }
22 }

10.20 成员内部类的常见修饰符及应用

成员内部类的常见修饰符

1.private 为了保证数据的安全性

例:

 1 class Outer
 2 {
 3     //成员内部类,私有
 4     private class Inner
 5     {
 6         public void show()
 7         {
 8             System.out.println("满足条件输出");
 9         }
10     }
11     public void method(int num)
12     {
13         if(num > 0)
14         {
15             Inner i = new Inner();
16             i.show();
17         }
18     }
19 }
20 class Demo
21 {
22     public static void main(String[] args)
23     {
24         Outer o = new Outer();
25         o.method(-8);
26     }
27 }

上例中,只有当method方法传入的参数大于0时,才可以创建内部类的对象调用方法,否则不创建

2.static 为了让数据访问更方便

  • 被静态修饰的成员内部类只能访问外部类的静态成员
  • 内部类被静态修饰后的方法可以有静态方法也可以有非静态方法

例:

 1 class Outer
 2 {
 3     private static int num = 10;
 4     //成员内部类,静态
 5     public static class Inner
 6     {
 7         //静态方法
 8         public static void show1()
 9         {
10             System.out.println(num);
11         }
12         //非静态方法
13         public void show2()
14         {
15             System.out.println(num);
16         }
17     }
18 }
19 class Demo
20 {
21     public static void main(String[] args)
22     {
23         //成员内部类被静态修饰后的访问方式:
24         //外部类名.内部类名 对象名 = new 外部类名.内部类名();
25         Outer.Inner oi = new Outer.Inner();
26         oi.show1();
27         oi.show2();
28
29         //静态方法show1()的另一种调用方式
30         Outer.Inner.show1();
31     }
32 }

10.21 成员内部类的面试题

分别输出30、20、10

 1 class Outer
 2 {
 3     public int num = 10;
 4     class Inner
 5     {
 6         public int num = 20;
 7         public void show()
 8         {
 9             int num = 30;
10             System.out.println(num);//30
11             System.out.println(this.num);//20
12             System.out.println(new Outer().num);//10
13             System.out.println(Outer.this.num);//10
14         }
15     }
16 }
17 class Demo
18 {
19     public static void main(String[] args)
20     {
21         Outer.Inner oi = new Outer().new Inner();
22         oi.show();
23     }
24 }

10.22 局部内部类访问局部变量的问题

1.可以直接访问外部类的成员

2.在局部位置可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能

例:

 1 class Outer
 2 {
 3     private int num = 10;
 4     public void method()
 5     {
 6         //局部内部类
 7         class Inner
 8         {
 9             public void show()
10             {
11                 //可以直接访问外部类的成员
12                 System.out.println(num);
13             }
14         }
15         //在局部位置创建内部类对象
16         Inner i = new Inner();
17         //通过对象调用内部类方法
18         i.show();
19     }
20 }
21 class Demo
22 {
23     public static void main(String[] args)
24     {
25         Outer o = new Outer();
26         o.method();
27     }
28 }

局部内部类访问局部变量的注意事项:

例:

 1 class Outer
 2 {
 3     public void method()
 4     {
 5         //局部变量
 6         final int num = 20;
 7         //局部内部类
 8         class Inner
 9         {
10             public void show()
11             {
12                 //局部内部类访问局部变量,该局部变量必须被声明为最终类型
13                 System.out.println(num);
14             }
15         }
16
17         Inner i = new Inner();
18         i.show();
19     }
20 }
21 class Demo
22 {
23     public static void main(String[] args)
24     {
25         Outer o = new Outer();
26         o.method();
27     }
28 }

因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立马从堆内存中消失,还要使用那个变量。为了让数据还能继续被使用,就用fianl修饰,这样,在堆内存里面存储的其实是一个常量值。

10.23 匿名内部类的格式和理解

匿名内部类就是内部类的简化写法。

前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类。

格式:new 类名或者接口名() {重写方法;}

本质:是一个继承了该类或者实现了该接口的子类匿名对象

例:

10.24 匿名内部类的方法调用

例:

 1 interface Inter
 2 {
 3     public abstract void show1();
 4     public abstract void show2();
 5 }
 6 class Outer
 7 {
 8     public void method()
 9     {
10         /* 一个方法的调用
11         new Inter()
12         {
13             public void show1()
14             {
15                 System.out.println("show1");
16             }
17         }.show1();
18         */
19         //两个方法的调用
20         Inter i = new Inter()
21         {
22             public void show1()
23             {
24                 System.out.println("show1");
25             }
26             public void show2()
27             {
28                 System.out.println("show2");
29             }
30         };
31         i.show1();
32         i.show2();
33     }
34 }
35 class Demo
36 {
37     public static void main(String[] args)
38     {
39         Outer o = new Outer();
40         o.method();
41     }
42 }

10.25 匿名内部类在开发中的应用

例:

 1 interface Person
 2 {
 3     public abstract void study();
 4 }
 5 class PersonDemo
 6 {
 7     public void method(Person p)
 8     {
 9         p.study();
10     }
11 }
12 class Demo
13 {
14     public static void main(String[] args)
15     {
16         PersonDemo pd = new PersonDemo();
17         pd.method(new Person()
18         {
19             public void study()
20             {
21                 System.out.println("好好学习");
22             }
23         });
24     }
25 }

当函数参数是接口类型时,而且接口中的方法不超过三个,可以用匿名内部类作为实际参数进行传递

10.26 匿名内部类的面试题

按照要求,补齐代码,要求在控制台输出”HelloWorld”

 1 interface Inter
 2 {
 3     void show();
 4 }
 5 class Outer
 6 {
 7     //补齐代码
 8 }
 9 class Demo
10 {
11     public static void main(String[] args)
12     {
13         Outer.method().show();
14     }
15 }

补齐代码:

 1 /*
 2 分析:
 3 1:Outer.method()可以看出method()是Outer中的一个静态方法
 4 2:Outer.method().show()可以看出method()方法的返回值是一个对象。
 5 又由于接口Inter中有一个show()方法,所以method()方法的返回值类型是一个接口。
 6 */
 7 interface Inter
 8 {
 9     void show();
10 }
11 class Outer
12 {
13     //补齐代码
14     public static Inter method()
15     {
16         return new Inter()
17         {
18             public void show()
19             {
20                 System.out.println("helloworld");
21             }
22         };
23     }
24 }
25 class Demo
26 {
27     public static void main(String[] args)
28     {
29         Outer.method().show();
30     }
31 }
时间: 2024-10-13 23:07:05

黑马程序员_JavaSE学习总结第10天_面向对象5的相关文章

黑马程序员_JavaSE学习总结第08天_面向对象3

------- android培训.java培训.期待与您交流! ----------  08.01 工具类中使用静态 例: 1 class ArrayTool 2 { 3 //将构造方法私有,外界不能创建该类的对象 4 private ArrayTool(){} 5 //遍历数组 6 public static void print(int[] arr) 7 { 8 System.out.print("["); 9 for(int i = 0;i < arr.length;i+

黑马程序员_JavaSE学习总结第07天_面向对象2

------- android培训.java培训.期待与您交流! ----------  07.01 成员变量和局部变量的区别 1.在类中的位置不同 成员变量    类中方法外 局部变量    方法内或者方法声明上 2.在内存中的位置不同 成员变量   堆内存 局部变量   栈内存 3.生命周期不同 成员变量   随着对象的存在而存在,随着对象的消失而消失 局部变量   随着方法的调用而存在,随着方法的调用完毕而消失 4.初始化值不同 成员变量   有默认的初始化值 局部变量   没有默认的初始

黑马程序员_JavaSE学习总结第27天_反射 &amp; 设计模式 &amp; JDK5、7、8新特性

------- android培训.java培训.期待与您交流! ----------  27.01  反射_类的加载概述和加载时机 类的加载:当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载:就是指将class文件读入内存,并为之创建一个Class对象.任何类被使用时系统都会建立一个Class对象. 连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并设置默认初始化值 解析 将类的二进制数

黑马程序员_JavaSE学习总结第11天_开发工具 &amp; API常用对象1

------- android培训.java培训.期待与您交流! ----------  11.01 常见开发工具介绍 1:操作系统自带的记事本软件 2:高级记事本软件例:Editplus,Notepad++,UltraEdit 3:集成开发环境 IDE(Integrated Development Environment) 这种软件是用于程序开发环境的应用程序,一般包括代码编辑器,编译器,调试器和图形界面工具. 集成了代码编写功能,分析功能,编译功能,调试功能等一体化的开发软件.具备这一特性的

黑马程序员_JavaSE学习总结第16天_集合框架2

------- android培训.java培训.期待与您交流! ----------  16.01 ArrayList存储字符串并遍历 ArrayList类概述:底层数据结构是数组,查询快,增删慢,线程不安全,效率高 ArrayList类是List 接口的大小可变数组的实现.实现了所有可选列表操作,并允许包括 null在内的所有元素.除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小. 例: 1 public class Practice 2 { 3 public

黑马程序员_JavaSE学习总结第23天_多线程1

------- android培训.java培训.期待与您交流! ----------  23.01  多线程程序的引入 如果一个程序只有一个执行流程,所以这样的程序就是单线程程序. 如果一个程序有多条执行流程,那么,该程序就是多线程程序. 23.02  进程概述及多进程的意义 要想说线程,首先必须得知道进程,因为线程是依赖于进程存在的 进程:正在运行的程序,是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源.   多进程意义:多进程的作用不是提高执行速度,而是提高CP

黑马程序员_JavaSE学习总结第26天_网络编程

------- android培训.java培训.期待与您交流! ----------  26.01  网络编程概述 网络编程:就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 26.02  网络模型概述和图解 计算机网络之间以何种规则进行通信,就是网络模型研究问题. 网络模型一般是指 OSI(Open System Interconnection开放系统互连)参考模型 TCP/IP参考模型 OSI参考模型七层简述: 1.物理层:主要定义物理设备标准,如网线的接口类型.光纤的接口

黑马程序员_JavaSE学习总结第15天_集合框架1

------- android培训.java培训.期待与您交流! ----------  15.01 对象数组的概述和使用 1 public class Student 2 { 3 // 成员变量 4 private String name; 5 private int age; 6 7 // 构造方法 8 public Student() 9 { 10 super(); 11 } 12 13 public Student(String name, int age) 14 { 15 super(

黑马程序员_JavaSE学习总结第19天_IO流1

------- android培训.java培训.期待与您交流! ----------  19.01  集合的特点和数据结构总结 HashSet.HashMap.Hashtable判断元素唯一性的方式: 通过对象的hashCode和equals方法来完成元素唯一性 如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中. 如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true. 如果为true,视为相同元素,不存.如果为false,那么