第九次课总结

来源:互联网 发布:阿里云到底是干嘛的 编辑:程序博客网 时间:2024/06/05 08:00

       在第九次课,主要讲到了下面的知识:包装类、字符串转成基本数据类型的三种方法、基本数据类型转字符串的方法、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.945.945.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 = s1s2 = 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 = 我是s1s2 = 我是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{@Overridevoid play() {}@Overridevoid work() {}}</span>

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

<span style="font-size:18px;">abstract class Fulei{abstract void play();abstract void work();}abstract class Zilei extends Fulei{@Overridevoid 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;}@Overridepublic double computCircumference() {return 2*PI*radius;}@Overridepublic 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>




0 0
原创粉丝点击