Java讨论班第二讲

一、String类

    1、简介:String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象。java把String类声明为final类时,不能有类。String类对象创建后不能修改,由0或多个字符组成,包含在一对双引号之间。

    2、String类对象的创建

            1)创建空字符串的String对象                                             

                                  Java讨论班第二讲

            2)使用构造方法创建并初始化String对象

                                Java讨论班第二讲

            3)使用已知字符串Str1创建String对象

                            Java讨论班第二讲

            4)用字符数组value创建一个String对象

                              Java讨论班第二讲

            5)将数组中某些元素创建String对象    

                        Java讨论班第二讲  

      3、String类常用方法

            1)求字符串长度

                        Java讨论班第二讲

             2)求字符串某一位置字符

                         Java讨论班第二讲

              3)提取子串

                        Java讨论班第二讲

               4)字符串比较

                         Java讨论班第二讲

                5)查找单个字符

                          Java讨论班第二讲

                 6)大小写替换

                          Java讨论班第二讲

                  7)截去字符串两端的空格,但不处理中间的空格

                        Java讨论班第二讲

         4、字符串与基本类型的转换

                  1)字符串转换为基本类型  ParseInt,ParseDouble.......

                  2)  基本类型转换为字符串类型 ValueOf

二、数组

        1、什么是数组

               1) 我们先看一个例子:

                            当我们需要编写代码保存4名学生的考试成绩,我们是可以定义四个变量分别保存他们的成绩

                           如果需要编写代码保存400个学生的考试成绩呢?当然最好的办法就不是创建400个变量了,而是创建一个保   存成绩的数组。

                2)理解:数组可以理解为一个巨大的盒子,里面可以按顺序存放多个类型相同的数据,形成变量集合

                                数组中的元素可以通过下标来访问,下标从0开始。

                                Java讨论班第二讲

        2、数组的使用

                            a.声明:数据类型[] 数组名;  或  数据类型 数组名[];  Java讨论班第二讲 存储学生成绩的数组,类型为整型

                            b.数组的空间分配:数组名 = new 数据类型[数组大小];Java讨论班第二讲 长度为5的整数数组

                            c.声明分配一起来: 数据类型[] 数组名  = new 数据类型[数组大小];Java讨论班第二讲

                            d.赋值:分配空间后就可以向数组中存放数据了,数组中元素都是通过下标来访问的  Java讨论班第二讲

                            e.处理:我们可以对赋值后的数组进行操作处理   Java讨论班第二讲

                            f.另一种直接创建数组的方式    Java讨论班第二讲

        3、数组常用方法

                             1)排序 :Arrays.sort(数组名)   Java讨论班第二讲   需要import java.util.Arrays;

                              2)将数组转换为字符串 :Arrays.toString(数组名)   Java讨论班第二讲 

         4、遍历数组

                                1)for循环

                                2)foreach循环

         5、二维数组

                              1)二维数组的访问输出同一维数组一样,只是多了个下标

                              2)原理:

                                            例如创建一个二维数组Java讨论班第二讲

                                   Java讨论班第二讲

                      也说明了在定义二维数组的时候可以只指定行的个数,然后再为每一刚分别指定列的个数,创建不规则的二维数组

三、对象

        1、用引用操纵对象

                在Java中,一切都被视为对象,操纵的标识符实际上就是对象的一个引用。

                身边有很多得例子,车,狗,人等等,都有自己的状态和行为。拿一条狗来举例子,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴、跑等等。

                   Java讨论班第二讲  Java讨论班第二讲   

                  Java讨论班第二讲引用也只是一个变量值(杯子),一样有东西放进去只不过放进去的是"遥控器"。

                例子:Java讨论班第二讲

        2、对象创建原理

               Java讨论班第二讲

          3、特例:基本类型

                            Java讨论班第二讲

          4、作用域

                       1)作用域是由花括号的位置决定的

                        2)对象的作用域:new 创建一个对象时,对象可以存活在作用域之外

                                        String引用s在作用域终点消失,s指向的String对象依然继续占据内存空间

                                          Java讨论班第二讲

                        3)必要结论

                                    a.在Java中,由new创建的对象,只要你需要,就会一直保留下去。

                                    b.它有一个垃圾回收站,用来见识new创建的对象,并辨别出那些不会再被引用的对象,随后释放这些对象的内存空间,给其他的对象使用。

四、类

              1、类是什么?

                           当用户编写自己的Java程序时,主要工作就是编写类。

                            当程序运行时,已声明的类用来创建新对象。由类创建对象的过程称为实例化。每一个对象都是类的新实例。

                            类是一种抽象数据类型,可以说类是对象的抽象,而对象是对象的实例。

              2、创建类

                            我们用关键字class来定义一个新类型

                                        class TypeName{

                                        }

                            即使我们并没有做任何事情,也没有任何行为,但是我们可以用new TypeName()来创建它的对象。

                                        例如:Java讨论班第二讲

              3、字段和方法

                            类定义以后,可以在类中设置两种类型元素:字段(属性、数据成员)和方法(行为、成员函数)。

                            1)类中字段变量分为三种:

                                    a.局部变量:在方法、构造函数或者语句块中定义的变量,变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

                                      b.成员变量:成员变量定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化,它可以被类中方法、构造方法和特定类的语句块访问。

                                       c.类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。

                                            静态变量:static类型的变量又是静态变量。静态变量和实例变量是不同的。

                                            静态变量在装载类的时候被分配内存并初始化,因为类只能被装载一次,所以静态变量在内存中也只有一个拷贝。    也就是说它不属于某个实例变量,而是属于类,只要程序加载了类的字节码,不用创建任何实例对象就会被分配空间可以被使用。

                                             实例变量是在创建实例时被分配内存并初始化,所以每个实例都有各自的实例变量。也就是说它必须得创建对象后才可以通过这个对象来使用。

                                              同一个类的实例之间共享静态变量。

                            2)成员方法

                                       a.构造方法

                                             每一个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器会为该类提供一个默认构造方法。

                                              在创建一个对象的时候,至少要调用一个构造方法。一个类可以有多个方法,但必须满足条件:

                                               Java讨论班第二讲

                                              默认构造方法:没有参数的构造方法

                                              重载构造方法:有参数的构造方法

                                        b.方法重载

                                                如果有两个方法的方法名相同,但参数不一致,那么就可以说一个方法是另一个方法的重载方法。

                                                    重载必须满足的条件:Java讨论班第二讲

                                        c.静态方法与实例方法

                                                    成员方法分为类方法(静态方法)和实例方法。用static修饰的是类方法/静态方法。

                                                    静态方法也和静态变量一样,不需创建类的实例,可以直接通过类名访问。

                                                    静态方法是针对类而不是某个对象实例的调用,所以,静态方法中不允许直接访问实例变量和实例方法。

                                                    访问静态变量:可以通过 类名.静态变量 / 类对象.静态变量 访问

                                                    访问静态方法:可以通过 类名.静态方法 / 类对象.静态方法 访问

                                                    访问实例变量/实例方法:只能通过 类对象.实例变量/实例方法 访问

五、包装类

              1、简介

                            Java语言是一个面向对象的语言,但是Java的基本数据类型却不是面向对象的,在实际使用时存在很多不便,为了解决这个问题,Java为每个基本数据类型设计了一个对应的类去代表它们,这八个和基本数据类型对应的类统称为包装类。

                        Java讨论班第二讲

            2、创建包装类对象

                   Java讨论班第二讲

            3、包装类常用方法

                Java讨论班第二讲

            4、自动装箱与拆箱机制

                    装箱:将基本类型转换成包装类型,分为自动装箱和手动装箱

                              Java讨论班第二讲

                    拆箱:将包装类型装换成基本类型,分为自动拆箱和手动拆箱

                              Java讨论班第二讲

           5、基本类型与其他类型之间的转换

                              Java讨论班第二讲

           6、基本类型与字符串类型的转换

                             1)基本类型-->字符串类型

                                        a.String的valueOf()方法

                                        b.空字符串 + 一个基本类型变量

                                        c.包装类的toString()方法

                                        Java讨论班第二讲

                             2)字符串类型 --> 基本类型

                                        a.包装类的valueOf()方法

                                        b.包装类的parse...()静态方法

                                         Java讨论班第二讲