• java基础学习05(面向对象基础02)


    面向对象基础02

    实现的目标

    1.String类的使用
    2.掌握this关键字的使用
    3.掌握static关键字的使用
    4.了解内部类

    String类

    实例化String对象
    一个字符串就是一个String类的匿名对象,就是已经开辟了堆内存空间的并可以直接使用的对象。
    1.采用直接赋值的方式进行操作。

    String name = "zhangsan";
    

    使用这种方式,如果一个字符串已经被一个名称所引用,则以后再有相同的字符串声明时,就不会再开辟内存空间。
    2.直接调用String类的构造方法(public String(String orignal))。

    String name = new String("zhangsan")
    

    使用这种方式,会造成内存浪费。因为一个字符串就是一个String类的匿名对象,使用new关键字,会开辟一个新的内存空间。

    String 内容比较
    1."=="(地址值比较)[str1 == str2]
    2.equals()(内容比较)[str1.equals(str2)]

    字符串的内容不可改变 字符串的内容一旦声明就不可改变,一个String内容可以改变实际上是通过内存地址的"断开-连接"变化完成的,而本身字符串的内容并没有任何变化。

    String类的常用方法
    String类中提供了大量的操作方法,常用的如下:

        方法                                  效果
    
    s.length()                          返回s字符串长度  
    s.charAt(3)                         返回s字符串中下标为3的字符   
    s.substring(0, 6)                   返回s字符串中下标0到6的子字符串  
    s.indexOf("Hello")                  返回子字符串"Hello"的下标
    s.startsWith(" ")                   判断s是否以空格开始  
    s.endsWith("hh")                    判断s是否以"hh"结束
    s.equals("Good World!")             判断s是否等于"Good World!"
        ==只能判断字符串是否保存在同一位置。
        需要使用equals()判断字符串的内容是否相同。  
    s.compareTo("Hello World!")         比较s字符串与"Hello World!"在词典中的顺序,
        返回一个整数,如果<0,说明s在"Hello World!"之前;
        如果>0,说明s在"Hello World!"之后;
        如果==0,说明s与"Hello World!"相等。
    s.trim()                            去掉s前后的空格字符串,并返回新的字符串
    s.toUpperCase()                     将s转换为大写字母,并返回新的字符串  
    s.toLowerCase()                     将s转换为小写,并返回新的字符串   
    s.replace("World", "Universe")      将"World"替换为"Universe",并返回新的字符串
    

    this关键字

    用法:
    1.this强调本类的方法
    2.表示类中的属性
    3.可以使用this调用本类的构造方法(必须放在构造方法的第一行) 
    this调用构造方法时一定要留一个构造方法作为出口,即程序中至少存在一个构造方法不使用this调用其它构造方法。 
    4.this表示当前对象

    /**
    *1.定义一个Student类并测试该类
    *2.完成两个对象的比较操作,在比较时,首先进行地址比较,如果两个对象的地址相同,
    *  则肯定是同一个对象,而如果地址不相等,则将一个个属性进行依次的比较。
    */
    class Student{
        private String stuid;       //学号
        private String name;        //姓名
    
        public Student(){
    
        }
        public Student(String stuid,String name){
            this.setStuid(stuid);
            this.setName(name);
        }
        //调用此方法时,存在两个对象:当前对象、传入的对象
        public boolean compare(Student stu){
            Student stu1 = this;                                //表示当前调用方法的对象
            Student stu2 = stu;                                 //传递到方法中的对象
            if(stu1 == stu2){                                   //比较两个内存地址
                return true;
            }
            if(stu1.stuid.equals(stu2.stuid)&&stu1.name==stu2.name){ //比较每个属性是否相等
                return true;
            }else{
                return false;
            }
        }
    
        public void setStuid(String stuid){
            this.stuid = stuid;
        }
        public String getStuid(){
            return this.stuid;
        }
    
        public void setName(String name){
            this.name = name;
        }
        public String getName(){
            return this.name;
        }
    }
    /**
    *1.编写测试类,测试以上代码
    */
    class Demo02{
        public static void main(String [] args){
            Student stu1 = new Student("1114020116","张三");
            Student stu2 = new Student("1114020116","张三");
            if(stu1.compare(stu2)){
                System.out.println("两个对象相等!");
            }else{
                System.out.println("两个对象不相等!");
            }
        }
    }
    

    Static关键字

    在程序中如果用static声明变量的话,则此变量称为静态变量。如果很多对象有一个共同属性且值相同,可以使用static修饰该属性。因为static声明的属性是所有对象共享的。

    /**
    *1.定义一个Student类并测试该类
    */
    class Student{
        private String stuid;       //学号
        private String name;        //姓名
        static String city = "中国";  //使用static定义属性,有默认值
        public Student(){
    
        }
        public Student(String stuid,String name){
            this.setStuid(stuid);
            this.setName(name);
        }
    
        public void setStuid(String stuid){
            this.stuid = stuid;
        }
        public String getStuid(){
            return this.stuid;
        }
    
        public void setName(String name){
            this.name = name;
        }
        public String getName(){
            return this.name;
        }
    
        public String tell(){
            return "我叫:"+this.name+" 学号是:"+this.stuid+" 目前在 "+city;
        }
    }
    /**
    *1.编写测试类,测试以上代码
    */
    class Demo03{
        public static void main(String [] args){
            Student stu1 = new Student("1114020116","张三");
            Student stu2 = new Student("1114020117","李四");
            Student stu3 = new Student("1114020118","王五");
            System.out.println("修改信息之前:"+stu1.tell());
            System.out.println("修改信息之前:"+stu2.tell());
            System.out.println("修改信息之前:"+stu3.tell());
            System.out.println("--------------------------");
            Student.city = "美国";                                //修改static属性
            System.out.println("修改信息之后:"+stu1.tell());
            System.out.println("修改信息之后:"+stu2.tell());
            System.out.println("修改信息之后:"+stu3.tell());
        }
    }
  • 相关阅读:
    LeetCode
    LeetCode
    136. Single Number
    485. Max Consecutive Ones
    THinkPHP的认识
    MySql的简单数据类型区别与认识
    关于数据库中字符串类型的区别与使用方法
    关于数据库的建立以及表格的建立
    关于xampp集成开发环境的建立与初步认识
    如何关闭SQL进程
  • 原文地址:https://www.cnblogs.com/billyzh/p/5343262.html
Copyright © 2020-2023  润新知