第七章 类和对象
7.1 面向对象
7.1.1 对象 将一个事物分为各个特点描述成一个对象就叫对象
7.1.2 类 不能将所谓的一个事物描述出一类事物,此时需要类来对一类对象统称。
7.1.3 封装
封装是面向对象编程的核心思想。
面向对象设计具有 封装性、继承性、多态性。
7.1.4 继承
类与类之间的同样具有关系,类与类之间的关系叫关联,继承就是其中一种关联关系。
7.1.5 多态
父类与子类,将父类对象应用于子类的特征就是多态。
7.2 类
成员方法
格式: 权限修饰符(public/private/protected) +返回值类型 +方法名(参数类型 参数名){
........//方法体
return 返回值
}
注:无返回值可以用void关键字代替
this关键字
例如
private String name
public void setName(String name){
this.name=name;
}
上端代码中 String name是成员变量,而setName方法中的形参(String name)与成员变量名称相同,都是name,则在方法主体中用this.name代替成员变量,用name表示形参的局部变量
方法主体的意思就是将形参局部变量name赋值与成员变量name
而this除了调用成员变量或者成员方法的功能之外还可以作为方法的返回值。
7.3 类的构造方法
在类中除了成员方法之外,还有存在一种特殊类型的方法,那就是构造方法。
构造方法是一个与类同名的方法,每当类实例化一个对象的时候,类都会自动调用构造方法。
构造方法特点:
一没有返回值;
二构造方法名称要与本类名称相同
7.4 静态变量、常量和方法
static
java对静态方法有两点规定
一静态方法中布可以使用this关键字
二静态方法中不可以直接调用非静态方法
注:java规定不能讲方法内的局部变量声明成static的。
7.5 类的主方法
格式
public static void main(String[] args){
//方法体
}
主方法有以下特点
一.主方法是静态的,所以在主方法中调用其他的方法时,该方法必须也是静态的
二.主方法没有返回值
三.主方法的形参是数组,其中args[0]~arg[n]分别代表程序的第一个到第n个参数,可以使用args.length获取参数的个数
7.6 对象
对象是由类抽象出来的,所有的问题都通过对象来处理,对象可以操作类的属性和方法解决相应的问题。
对象的比较
String c1=new String("abc");
String c2=new String("abc");
String c3=c1;
c2==c3结果就是false,因为==是打印内存中的地址,c3和c1是一个地址,而c2和c3不一样
c2.equals(c3)结果就是true,因为equals()的方法打印的是引用的内容,c2和c3内容都是"abc"
对象的销毁
和其他语言不通,java虚拟机自动会将生命周期外的对象的内存地址回收。
以下两种情况下,jvm会视为对象为垃圾
一.对象引用超过其作用范围,这个对象将视为垃圾
二.将对象赋值为null,则对象将视为垃圾。
第八章 包装类
8.1 Integer
例子,parseInt(String str)将字符串值返回成int值
String str[]={"12","13","15"}
int sum=0;
for (int i=0;i<str.length;i++){
int myint=Integer.parseInt(str[i]);
sum=sum+myint;
}
System.out.println("数字中各元素之和是:"+sum);
}
结果是40
是个int型
8.2 Boolean
8.3 Byte
8.4 Character
8.5 Double
8.6 Number
第九章 数字处理类
9.1 数字格式化
DecimalFormat是NumberFormar的一个子类,用于格式化十进制数字
9.2 数学运算
Math类
用法 Math.数学方法 如 Math.PI Math.E
9.2.1 三角函数
double sin(double a)
double cos(double a)
...
三角函数都是double型的
double toRadians(double angdeg) 将角度转换为弧度
double toDegrees(double angrad) 将弧度转换为角度
9.2.2 指数函数
double exp(double a) 用于获取e的a次方,
double log(double a) 用于获取自反对数,即lna
double log10(double a) 用于获取地数为10的对数
double sqrt(double a) 用于获取a的平方根,其中a>=0
double cbrt(double a) 用于获取a的立方根
double pow(double a,double b) 用于获取a的b次方
9.2.3 取整函数
9.2.4 取最大值最小值绝对值
double max(double a,double b) 取a与b之间最大值
int min(int a,int b) 取a与b之间最小值
int abs(int a) 取a的绝对值
9.3 随机数
9.3.1 Math.random()方法
Math类中存在一个random()方法,改方法默认生成大于等于0.0霄宇1.0的double型随机数。
即0<=Math.random()<1.0
虽然Math.random范围很小,但是可以稍加修饰得到想要范围的随机数
例子
public class MathRandom {
public static int GetEvenNum(double num1,double num2){
int s=(int)num1+(int)(Math.random()*(num2-num1));
if (s%2==0){
return s;
}else{
return s+1;
}
}
public static void main(String[] args) {
System.out.println("任意一个10-100之间的偶数:"+ GetEvenNum(10, 100));
}
}
获取10-100之间的偶数随机数
其中m+(int)(Math.random()*n)语句可以获取m~m+n之间的随机数,所以利用这一点编程
同理 (char)('a'+Math.random()*('z'-'a'+1))可以产生A~Z之间随机字符。
9.3.2 Random类
除了Math类中的random()方法,java中还有java.util.Random类
语法如下
Random r=new Random();
r.nextInt(n) 产生一个大于等于0小与n的随机整数。
r.nextBoolean() 返回一个随机布尔型值。