第九次课总结

       在第九次课,主要讲到了下面的知识:包装类、字符串转成基本数据类型的三种方法、基本数据类型转字符串的方法、Object的toString()和equals()方法的使用、final修饰类、方法、变量、抽象类

一、包装器(wrapper)类

           1、基本类型的wrapper类:

         2、为了弥补基础数据类型进行计算和转换的繁琐操作(有利于类型转换)
       3、自动装箱(Integer int = 100,隐式转换)和拆箱(int it = int;)
       4、jdk1.5+后系统自动进行装箱和拆箱操作

     

二、字符串转成基本数据类型的三种方法:

        1、利用包装类里面的parseXxx(String s)的静态方法,注意:Character没有ParseXxx()方法

      2、利用包装类的Xxx(String s)构造器,如:        

          3、Xxx.valueOf(String s)方法

                String markString = "45.9";
		
		double m1 = Double.parseDouble(markString);
		System.out.println(m1);
		
		double m2 = Double.valueOf(markString);
		System.out.println(m2);
		
		double m3 = new Double(markString);
		System.out.println(m3);
		
运行结果:

45.9
45.9
45.9

       4、介绍一个用于其他进制转换成十进制的方法:valueOf(String s, int radix),radix表示基数,即多少进制,s为你原来的进制的数值,注意:十六进制s中的前两个字符不能是“0x”,否则会抛出异常;八进制的s中的首个字符可以是“0”,也可以不写“0”。

             如:

<span style="font-size:18px;">		int age = Integer.valueOf("11", 16);		
		System.out.println("十六进制字符串转换成十进制:" + age);
		</span>
             运行结果:

<span style="font-size:18px;">                十六进制字符串转换成十进制:17</span>


三、基本数据类型转字符串的方法

          1、建议使用:String.valueOf(xxx);

                int num = 12;
		String numsString = String.valueOf(num);
		System.out.println("number = " + numsString);
运行结果:

                number = 12

      2、也可以使用:基本数据类型与”” 进行连接运算(但是不够优雅) 

四、Object的toString()和equals()方法的使用注意事项

        1、toString()返回对象的“自我描述”

        2、     ==    :  用于基础数据类型判断
             equels() : 用于引用数据类型判断

             如:

                String s1 = "hello";
		String s2 = "hello";
		System.out.println("s1 == s2判断结果:"+(s1==s2));
		
		String s3 = new String("hello");
		String s4 = new String("hello");
		System.out.println("s1 == s3判断结果:"+(s1==s3));
		
		System.out.println("s3.equals(s1)判断结果:"+s3.equals(s1));

		System.out.println("s3.equals(s4)判断结果:"+s3.equals(s4));
		
运行结果:

                s1 == s2判断结果:true
                s1 == s3判断结果:false
                s3.equals(s1)判断结果:true
                s3.equals(s4)判断结果:true

        3、补充:""和null的简单区别
                     null没内存地址;

              ""有内存地址,空字符串。

              即:

              空字符串:系统会为它分配内存空间;
              null:系统不会为它分配内存空间。

五、final修饰类、方法、变量

             1、final修饰的类不能被继承

        2、final修饰方法不能被重写

        3、对于fianl修饰的变量:

             (1)final成员变量一旦有了初始值,就不能被重新赋值
                      如果不赋值,系统将会默认给它分配0、null或者false等值,毫无意义,也无法再次改变,所以必须显式初始化;        

             (2)

                    a.final实例变量:可以在普通初始化块中赋初始值,或直接指定,或在构造器中赋值,如:

class Shilibl{
	final String string;
	{
		string="s1";
	}
	final String string2="s2";
	final String string3;
	public Shilibl(String string3) {
		
		this.string3 = string3;
	}
	void print(){
		System.out.println(this.string3+"\n还有:s1 = "+string+"\ns2 = "
				+string2);
	}
	
	public static void main(String[] args) {
		Shilibl shilibl = new Shilibl("我是s3");
		shilibl.print();
	}
}
运行结果:

我是s3
还有:s1 = s1
s2 = s2
                        b.final类变量:可以在静态初始化块赋初始值,或直接指定,如:

class Jingtaibl{
	final static String string1;
	static{
		string1="我是s1";
	}
	final static String string2="我是s2";
	
	public Jingtaibl() {
		
	}
	void print(){
		System.out.println("s1 = "+string1+"\ns2 = "
				+string2);
	}
	
	public static void main(String[] args) {
		Jingtaibl jingtaibl = new Jingtaibl();
		jingtaibl.print();
	}
}

运行结果:

s1 = 我是s1
s2 = 我是s2

              (3)系统不会对局部变量进行初始化:
                        可以在定义时候指定,也可以不指定默认值,参照第一小点的规则。

              (4)基本类型:不能重复赋值
                       引用类型:它仅仅是保存一个引用,只保证引用地址不会改变即可,也就是说对象本身是可以改变的,
如:

                     //<span style="font-size:18px;">数组对象在变
		final int [] iArr = {3,4,2,9,6};

 		System.out.println(Arrays.toString(iArr));
                //进行排序
		
		Arrays.sort(iArr);
		System.out.println(Arrays.toString(iArr));
		
//赋值
		iArr[3] = 7;
		System.out.println(Arrays.toString(iArr));</span>
		

运行结果:

<span style="font-size:18px;">[3, 4, 2, 9, 6]
[2, 3, 4, 6, 9]
[2, 3, 4, 7, 9]</span>

六、抽象类

         1、抽象类和抽象方法使用abstract修饰符来定义;

             注意:抽象类的修饰符必须为public或protected,不能为private,缺省情况下默认是default

                        当修饰符为public时,一个在A项目的zilei包中的子类(文件为:zilei.java)如何继承自一个再B项目的fulei包中的父类(文件为:fulei.java)呢?

                         (1)目录结构:A为子类所在的项目,B为父类所在的项目


                                    (2)父类和子类初始状态分别为:


                       

                           (3)为了能让zilei继承fulei,需要A项目引用B项目:

                                 首先。A项目右键“Properties”,接下来按照如图所示的步骤操作:



                            (4)接着在zilei中继承父类,但是遇到错误:


                             (5)需要修改父类的play()和work()方法的可见性:

                             (6)现在在子类zilei中就可以继承父类fulei,并实现父类中未实现的方法:


                                 在第五步中,也可以把子类声明为抽象类。

       2、抽象方法不能有方法体,即:public returnType abstractMethodName();

             注意:抽象方法的修饰符必须为public或protected,不能为private,缺省情况下默认是default
       3、抽象类不能被实例化,只能通过被子类继承来使用

             注意点:(1)子类如果不是抽象类,则必须重写其所继承的抽象类的所有抽象方法,下面通过例子来说明:

<span style="font-size:18px;">abstract class Fulei{
	abstract void play();
	abstract void work();
}
class Zilei extends Fulei{
	@Override
	void play() {
		
	}
	@Override
	void work() {
		
	}
}</span>

                                            (2) 如果子类是抽象类,可以重写,也可以不重写所继承的父类的任意数量的抽象方法,照样通过例子来说明:

<span style="font-size:18px;">abstract class Fulei{
	abstract void play();
	abstract void work();
}
abstract class Zilei extends Fulei{
	@Override
	void play() {
		
	}
}
abstract class anotherZilei extends Fulei{
	
}</span>


       4、含有抽象方法的类智能被定义为抽象类

七、作业

<span style="font-size:18px;">package chouxianglei;

import java.util.List;

public abstract class Shape {

	private String color;

	public abstract double computCircumference();
	public abstract String getType();
	
	public Shape(String color) {
		this.color = color;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
}</span>
<span style="font-size:18px;">package chouxianglei;

public class Circle extends Shape {
	
	private double radius;
	private final double PI = 3.14;

	public Circle(String color,double radius) {
		super(color);
		this.radius = radius;
	}

	@Override
	public double computCircumference() {
		return 2*PI*radius;
	}

	@Override
	public String getType() {
		return "圆形";
	}
	public static void main(String[] args) {
		Circle circle = new Circle("红色", 10);
		System.out.println("颜色:"+circle.getColor());
		System.out.println("形状:"+circle.getType());
		System.out.println("周长:"+circle.computCircumference());
				
	}

}</span>
运行结果:

<span style="font-size:18px;">颜色:红色
形状:圆形
周长:62.800000000000004</span>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值