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 }