一.静态变量static
1.静态变量和工具类
1.成员变量前加上了static--表示类中所有的对象共享同一个变量
2.单独存放静态变量的空间--静态区 当字节码文件加载到方法区--静态区就出现了--现在静态区在堆当中,在静态区中,存放静态变量 引用数据类型默认初始化值为null
3.静态变量--随着类的加载而加载,是优先于类出现的
4.new--创建对象时,在堆中开辟存储空间,并将所有初始化值设为null或0---当赋值时,这些将会被覆盖
5.static--最大的特点--共享
方法定义为静态static--方便调用
2.工具类练习
package com.itheima.a02staticdemo2; public class ArrayUtil { private ArrayUtil(){ } //将字符串转为数组 public static String printArr(int[] arr){ StringBuilder sb=new StringBuilder(); sb.append("["); for (int i = 0; i < arr.length; i++) { if(i==arr.length-1){ sb.append(i); }else{ sb.append(i+","); } } sb.append("]"); return sb.toString(); } public static double getAverage(double[] arr){ double sum=0; for (int i = 0; i < arr.length; i++) { sum+=arr[i]; } return sum/arr.length; } }
package com.itheima.a02staticdemo2; import static com.itheima.a02staticdemo2.ArrayUtil.getAverage; import static com.itheima.a02staticdemo2.ArrayUtil.printArr; public class ArrayText { public static void main(String[] args) { int[]arr1={1,2,34,56,7}; double[]arr2={12.4,5.6,77,2,66,6}; String s=printArr(arr1); System.out.println(s); double avg=getAverage(arr2); System.out.println(avg); } }
package com.itheima.a03staticdemo3; public class Student { private String name; private int age; private String gender; public Student() { } public Student(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } }
package com.itheima.a03staticdemo3; import java.util.ArrayList; public class StudentText { public static void main(String[] args) { ArrayList<Student> list =new ArrayList<>(); Student s1=new Student("zs",12,"男"); Student s2=new Student("ls",13,"男"); Student s3=new Student("ww",17,"女"); list.add(s1); list.add(s2); list.add(s3); int max=StudentUtil.getMaxAge(list); System.out.println(max); } }
package com.itheima.a03staticdemo3; import java.util.ArrayList; public class StudentUtil { StudentUtil(){} public static int getMaxAge(ArrayList<Student> list){ int max=list.get(0).getAge(); for (int i = 0; i < list.size(); i++) { int temp=list.get(i).getAge(); if(temp>max){ max=temp; } } return max; } }
3.注意事项
1.
static是共享的,在有static存在的方法中不能有this关键字
静态方法不能有非静态的成员变量
//在内存中,静态方法可以互相调用
//起初值为0
二.继承
1.概述
继承是类和类之间的父子关系
2.特点
每一个类都直接或间接的继承与object:这是虚拟机自动加上的(默认的继承关系)