java之路 static

 1 /*
 2 static(静态)
 3 
 4 需求:描述一下传智学生类。  都是中国人....
 5 
 6 
 7 目前存在的问题: 所有的学生都是中国 的,有n个学生就会有n份中国的 数据存内存中,这样子
 8 会浪费内存。
 9 
10 目前方案: 把“中国”这个数据移动 到数据共享区中,共享这个数据给所有的Student对象使用即可。
11 
12 问题2: 如何才能把这个数据移动 到数据共享区中共享呢?
13 
14 解决方案: 只需要使用static修饰该数据即可。
15 
16 
17 静态的成员变量只会在数据共享区中维护一份,而非静态成员变量的数据会在每个对象中都维护一份的。。
18 
19 */
20 
21 class Student{
22 
23     String name;
24     
25     //使用了static修饰country,那么这时候country就是一个共享的数据。
26 
27     static    String  country  = "中国";    //国籍
28     
29     //构造函数
30     public Student(String name){
31         this.name = name;
32     }
33 }
34 
35 class Demo9 {
36 
37     public static void main(String[] args) 
38     {
39         Student s1 = new Student("张三");
40         Student s2 = new Student("陈七");
41 
42         s1.country = "小日本";
43         System.out.println("姓名:"+s1.name+" 国籍:"+ s1.country); //  中国   
44         System.out.println("姓名:"+s2.name+" 国籍:"+ s2.country); // 小日本
45     }
46 }

 

 1 /*
 2 static(静态\修饰符)
 3 
 4     1. static修饰成员变量 :如果有数据需要被共享给所有对象使用时,那么就可以使用static修饰。
 5         
 6         静态成员变量的访问方式:
 7                 
 8                 方式1: 可以使用对象进行访问。
 9                     格式: 对象.变量名。
10                 
11                 方式二: 可以使用类名进行访问。
12                     格式: 类名.变量名;
13     
14             注意: 
15                 1. 非静态的成员变量只能使用对象进行访问,不能使用类名进行访问。
16                 2. 千万不要为了方便访问数据而使用static修饰成员变量,只有成员变量的数据是真正需要被共享的时候
17                 才使用static修饰。
18             
19         static修饰成员变量的应用场景: 如果一个数据需要被所有对象共享使用的时候,这时候即可好实用static修饰。
20 
21 
22     2. static修饰成员函数:
23 
24 */
25 
26 class Student{
27 
28     static    String name;  //非静态成员变量
29     
30     static    String  country  = "中国";      //静态的成员变量
31     
32     public Student(String name){
33         this.name = name;
34     }
35 }
36 
37 
38 class Demo10 {
39 
40 
41     public static void main(String[] args) 
42     {
43         Student s1 = new Student("狗娃");
44         Student s2 = new Student("狗剩");
45         
46         //System.out.println("国籍:"+ Student.country);
47         System.out.println("名字:"+ s1.name);
48         System.out.println("名字:"+ s2.name);
49     }
50 }

 

 1 /*
 2 
 3 构造函数:
 4 
 5 
 6 构造函数的作用: 初始化对应的对象。
 7 
 8 构造函数的格式:
 9     
10     修饰符  函数名(形式参数){
11         函数体
12     }
13 
14 构造函数要注意的事项:
15     1. 构造函数是没有返回值类型的。
16     2. 构造函数的函数名是必须与类名一致。
17     3. 构造函数不是由我们手动调用的,是我们在创建了对应的对象时,jvm会根据你创建的对象传递的参数调用
18     对应 的对象。
19     4. 如果一个类没有显示写上一个构造函数的时候,那么java编译器会为该类添加一个无参 的构造函数。
20     5. 如果一个类已经显示写上一个构造函数的时候,那么java编译器则不会再为该类添加一个无参 的构造函数。
21     6. 构造函数是可以以函数重载的形式存在多个。
22 
23 构造代码块:
24 
25 构造代码块的作用:给对象进行统一的初始化。
26 
27 构造代码块 的格式:
28         {
29             代码;
30         }
31 
32 构造代码块是在创建了代码块所属类的对象时调用一次。
33 
34 
35 this关键字:
36 
37 this关键字代表了所属函数的调用者对象。
38 
39 this关键字的作用:
40     1.  一个类中存在同名的成员变量与局部变量时,在方法的内部默认是访问局部 变量的,可以通过this关键字指定访问成员变量 的数据。
41     2.  this关键字还可以在构造函数中调用另外一个构造函数初始化对象,
42 
43 this关键字调用构造函数要注意的事项:
44     1. this关键字调用其他 的构造函数时,必须要是在第一个语句。
45     2. this关键字调用构造函数时不能出现相互调用,因为是一个死循环。    
46     3. 如果在方法的内部访问一个变量时,该变量只存在于成员变量中,局部没有没有,这时候java编译器会为该变量的前面添加this关键字。
47 
48 static(静态、修饰符)
49     
50 
51     static修饰成员变量时:static修饰成员变量时,那么该成员变量的数据就是一个共享的数据.
52     
53         静态成员变量的访问方式:
54             
55                 方式一: 使用对象进行访问。
56                         对象.属性名
57                 方式二:可以使用类名进行访问。
58                         类名.属性名
59         注意:
60             1. 非静态成员变量不能类名直接访问,只能使用对象进行访问。
61             2. 千万不要为了方便访问成员变量而使用static修饰,一定要是该数据是共享数据 时才使用static修饰。
62 
63 
64 
65 
66 
67 */
68 class Demo1 
69 {
70     public static void main(String[] args) 
71     {
72         System.out.println("Hello World!");
73     }
74 }

 

 1 /*
 2 需求:编写一个数组的工具类。
 3     Arrays.toString()   [1,2,3,4];
 4     sort()
 5 */
 6 
 7 //数组工具类
 8 class ArrayTool{
 9 
10     public static String toString(int[] arr){
11         String result  = "";
12         for(int i = 0;  i < arr.length ; i++){
13             if (i==0){
14                 result+="["+arr[i]+",";
15             }else if(i==(arr.length-1)){
16                 result+= arr[i]+"]";
17             }else{
18                 result+=arr[i]+",";
19             }
20         }
21         return result;
22     }
23 public  static  String toString(int [] arr){
24     String result="";
25     for(int i=0;i<arr.length;i++){
26         if(i==0){
27             result="["+arr[i]+","+result;
28         }else if(i==(arr.length-1)){
29             result=arr[i]+"]";
30         }else{
31             result=arr[i]+","+result;
32         }
33     }
34 }
35 
36     public static void sort(int[] arr){
37         for(int i = 0; i < arr.length-1 ; i++){
38             for(int j = i+1 ; j<arr.length ; j++){
39                 if(arr[i]>arr[j]){
40                     int temp = arr[i];
41                     arr[i] = arr[j];
42                     arr[j] = temp;
43                 }
44             }
45         }    
46     }
47 
48 }
49 
50 
51 
52 class Demo3 
53 {
54     public static void main(String[] args) 
55     {
56         int[] arr = {12,1,456,165};
57         //ArrayTool tool = new ArrayTool();
58 
59         ArrayTool.sort(arr);
60         String info = ArrayTool.toString(arr);
61         System.out.println("数组的元素:"+ info);
62     }
63 }

 

posted @ 2016-06-15 17:41  aytsoft  阅读(179)  评论(0编辑  收藏  举报