1 .static:
静态变量:有static 修饰;属于类中,存贮在方法区中,只有一份
通过类名. 来进行调用;
当所有的对象所共享的资源的时候(图片,视频,音频等)
静态方法:static 修饰;属于类中,存储在方法区,只有一份;
通过类名. 调用;
何时用?方法的操作只与参数有关,与对象无关;
静态代码块:属于类中,在类加载的期间进行自动调用,类只能被加载一次,所以静态代码块也只执行一次;
初始化,加载静态资源的时候调用
2 录入学生姓名和成绩,按升序进行输出
public class Student {
String name;
int grade;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(“请输入学生人数:”);
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
Student[] s=new Student[n];
for(int i=0;i<n;i++){
s[i]=new Student();
System.out.println(“请输入第”+(i+1)+“个学生的名字:”);
String name=sc.next();
s[i].setName(name);
System.out.println(“请输入第”+(i+1)+“个学生的成绩”);
int grade =sc.nextInt();
s[i].setGrade(grade);
}
for (int i = 0; i < s.length-1; i++) {
for (int j = 0; j < s.length-i-1; j++) {
if(s[j].getGrade()>s[j+1].getGrade()){
Student temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
System.out.println(“升序排列后的结果为:”);
for(int i=0;i<s.length;i++){
System.out.print(s[i].getName()+" "+s[i].getGrade());}
}
- abstract:
1.抽象方法:abstract修饰,只有方法的定义,没有方法的具体实现;
2,抽象类:abstract修饰;包含抽象方法的类,必须是抽象类;
抽象类是不能被实例化的;
抽象类是需要被继承的,继承了抽象类的子类,重写所有的抽象方法;变普通类为抽象类。
3意义:
封装了子类中所共有的属性和行为;------代码重用
为所有的子类提供了一种统一的类型;-----向上造型
可以包含抽象方法,为所有的子类提供统一的入口;
4.设计规则:
将所有的子类/派生类所共有的属性和行为,抽到超类中
所有的子类行为都一样,设计为普通类;
所用的子类的行为都不一样,设计为抽象方法
5.//添加音乐
FileInputStream fi=new FileInputStream(“music/v.wav”);
AudioStream sa=new AudioStream(fi);
AudioPlayer.player.start(sa);
6.分析:从下往上 写代码:从上往下
7.接口的特点:
接口不能被实例化; 接口是可以多实现的,但继承是单继承;
接口中是可以定义方法的,方法也有固定的修饰词:public abstract
子类必须覆盖接口中所有的抽象方法,子类才可以实例化,否则子类是一个抽象类;
接口中是可以定义变量的,但是变量必须有固有的修饰符,public abstract; 也成为变量,值不发生改变; - final: 修饰符
修饰符,可以用于修饰类,成员变量,成员方法
只要被final 修饰的类,不能被继承,不能有子类
final 修饰的方法,不能被重写;
final修饰的变量:不能被修改,是常量