封装,就是隐藏实现细节,将属性私有化(private),提供公有方法访问私有属性,通过这些共有方法访问私有属性。
修改属性的可见性来限制对属性的访问
为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的访问
在setter和getter方法中,加入对属性的存取限制
package CSDN; public class Teacher { //1.使用private修饰符修饰属性,将属性的访问范围控制在本类中 private String name; private int age; //2.提供公共的setter和getter方法给其他的类调用 public void setName(String pname) { name = pname; } public void setAge(int page) { if(page>=22) { age = page; }else { System.out.println("教师最小年龄22岁"); age = 22; } } public String getName() { return name; } public int getAge() { return age; } public String introduction() { return "大家好,我是资深教师"+name+",今年"+age+"岁"; } } package CSDN; public class TestTeacher { public static void main(String[] args) { Teacher t = new Teacher(); t.setName("张三"); t.setAge(4); System.out.println(t.getName()); System.out.println(t.introduction()); } }
·继承分为子类、父类;
·继承需要符合的关系:is-a,⽗类更通⽤、⼦类更具体 ;
·子类具有父类一般特性(包括属性和方法),以及自身特殊的特性;
·继承目的是减少重复代码的编写;
·关键词:extends 表示一个类继承了另一个类;
·子类的构造方法中,用关键词super可以调用父类的构造方法;
·父类中只定义一些通用的属性和方法;
·子类自动继承父类的属性和方法,子类只需要定义特定的属性和方法;
·方法重写后,通过super关键词调用父类的方法
#所有的Java类都直接或间接的继承了java.lang.Object类
//父类 package CSDN; public class Teacher51 { String name; // 姓名 String center; // 所属中心 //构造方法 public Teacher51(String name,String center) { this.name = name; this.center =center; } // 授课方法 public void giveLesson() { System.out.println("开始理论授课"); } // 自我介绍 public void introduction() { System.out.println("大家好,我是" + name + "所属中心是" + center); } } //子类 package CSDN; //JAVA使用extends关键字表示继承 public class JavaTeacher extends Teacher51 { String hobby; //爱好 // 子类可以继承父类属性和方法,但是构造方法不能继承 // 如果父类自定义构造方法,子类也必须要自定义构造方法 // 子类构造方法的第一句必须使用super关键字调用父类的构造方法 // 构造方法 public JavaTeacher(String name, String center,String hobby) { Super(name, center);// Teacher51(name,center) this.hobby = hobby; } // 重写 // 当子类继承的方法不好用,子类可以重写从父类继承的方法 // 方法名和参数要跟父类的方法保持一致 public void giveLesson() { System.out.println("打开Eclipse"); // 使用super关键字调用父类的方法 super.giveLesson(); } public void play() { System.out.println(name+"正在玩"+hobby); } }
数组将值分类放,易于查找;
分类以存放不同类型的数据;
数组是一个变量,存储相同类型的一组数据;
数组中所有元素必须属于相同的数据类型;
数组的下标从0开始
数据类型 数组名[]:int a[];
数据类型[]数组名=new 数据类型[大小]:int[]a=new int[5];
int[]a={1,2,3,4....};(只有声明时可以一次性赋值);
int[]a=new int[]{1,2,3,4...};
a.length:数组a的长度,即数组a中数的个数;
#数组下表从0开始,所以数组中第一个数为a[0],第二个为a[1],以此类推。
#数组常和for循环搭配,例如求平均值,求和,最大值和最小值
利用java中arrays自带排序方法:Arrays.sort(a)
输出Arrays排序:for(int i=0;i<a.length;i++){System.out.print(a[i]);}
每一轮比较,都冒出一个数组中最大值的泡,若有n个数,则需要比较n-1轮,第i轮就需要比较n-1-i次。
冒泡排序思想:数组中的数两两⽐较,较⼤的数往右,⼩的数往左
package CSDN; import java.util.Arrays; public class java4 { public static void main(String[] args) { int[] a={53,123,1,5,351,5,898,985,356,788}; for(int i=0;i<a.length;i++){ //数组名.length 返回数组的长度 System.out.print(a[i]+","); } double avg; int sum=0; for(int i=0;i<a.length;i++){ sum=sum+a[i]; //数组求和 } System.out.println("\n数组和是:"+sum); avg=(double)sum/a.length; //数组求平均值 System.out.println("数组平均值是:"+avg); int max=a[0]; for(int i=1;i<a.length;i++){ if(a[i]>max){ max=a[i]; } } System.out.println("数组的最大值是:"+max); //数组求最大值 int min=a[0]; for(int i=1;i<a.length;i++){ if(a[i]<min){ min=a[i]; } } System.out.println("数组的最小值是:"+min); //数组求最大值 Arrays.sort(a); System.out.print("arrays自带排序:"); //Arrays类排序法 for(int i=0;i<a.length;i++){ System.out.print(a[i]+","); } for(int i=0;i<a.length-1;i++){ //冒泡算法排序 for(int j=0;j<a.length-1-i;j++){ if(a[j+1]<a[j]){ int temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; } } } System.out.print("\n冒泡算法排序:"); for(int i=0;i<a.length;i++){ System.out.print(a[i]+","); } } }
计算字符串长度(返回类型int):a.length();
字符串比较是否相等(返回类型boolean):a.equals(b);
字符串连接(返回类型String):a.concat(b);
取字符串中某一段(返回类型String):
a.substring(b,c);(第一位数字符b下标从0开始,第二位数字符下标c从开始数为1)
例如a.substring(5,9);字符串a="我爱中华人民共和国",a的下标从0开始数,即第一位字符为"我",字符下标为0,所以字符下标为b=5的是字符"民",c的下标从1开始数,即第一位字符为"我",字符下标为1,所以字符下标为c=9的是字符"国"。故a.substring(5,9)代表的是字符串"民共和国"。
a.substring(5);(字符下标从0开始)
查找某个字符(串)在字符串中的位置(返回类型int):
a.indexOf(“字符(串)”);(字符(串)第一次出现的位置)
a.lastindexOf(“字符(串)”);(字符(串)最后一次出现的位置)
public class java4 { public static void main(String[] args) { String s1="字符串"; String s11="字符串"; int s2=s1.length(); String s3=s1.concat(s11); boolean s4=s1.equals(s3); int s5=s3.indexOf("字"); int s6=s3.lastIndexOf("字"); String s7=s3.substring(0); String s8=s3.substring(0, 3); System.out.println(s2); //3 System.out.println(s3); //字符串字符串 System.out.println(s4); //false System.out.println(s5); //0 System.out.println(s6); //3 System.out.println(s7); //字符串字符串 System.out.println(s8); //字符串 } }
程序在运行过程中所发生的不正常的事件,它会中断正在运行的程序
Exception:异常的根类
ArithmeiticException:算数错误形式,如零作除数
ArrayIndexOutOfBoundsException:数组小于或大于实际的数组大小
InputMismatchException:数据类型与输入数据类型不匹配
IlegalArgumentException:方法接收到非法参数