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

面向对象基础02

实现的目标

1.String类的使用 
2.掌握this关键字的使用
3.掌握static关键字的使用

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());
    }
}
时间: 2024-10-02 21:01:50

java基础学习05(面向对象基础02)的相关文章

java基础学习05(面向对象基础01--类实例分析)

面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过setter和getter设置和取得4.如果需要可以加入若干构造方法 5.再根据其它要求添加相应的方法6.类中的所有方法都不要直接输出,而是交给被调用处调用 Demo 定义并测试一个名为Student的类,包括属性有"学号"."姓名"以及3门课程"数学".

大话设计模式学习笔记——面向对象基础

前言 好记性不如烂"笔头"系列--大话设计模式学习笔记 目录 面向对象基础 面向对象基础 什么是类与实例 一切事物皆为对象,即所有的东西老师对象,对象就是可以看到.感觉到.听到.触摸到.尝到.或闻到的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,英文叫 Object-Oriented Programming,其实就是针对对象来进行编程的意思.类就是具有相同属性和功能的对象的抽象集合.实例就是一个真实的对象.比如我们属于'人'类,而个人就是'人'类

python基础学习05(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #dict{键:值} #哈希 #注:字典是无顺序的,所以你懂的 #创建与赋值 dict1={} dict2={'name':'apply','avg':24,'sex':'man'} print dict1,dict2

Java学习 &#183; 初识 面向对象基础一

面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决复杂问题时,通过面向对象的方式把握事物之间复杂的关系,方便分析整个系统:具体到微观时,仍然使用面向过程设计. 以开车为例,面向过程中思考 有一辆车 驾驶员上车 挂挡踩离合 车开动 而面向对象中思考 有车.驾驶员这两个个对象 车拥有挂挡离合这几个方法(还拥有属性,如性能外观) 人拥有挂挡踩离合这几个方

java基础学习——对面向对象的重识

最近几天在看java的视频,感觉很多东西java语法上很像c#,但是还是有很多内容惊到我: 1,java虚拟机 用过VMWar或者VirtualBox的童鞋都对"虚拟机"这个词有个大致的了解,虚拟机提供了个虚拟的平台,让我们可以模拟一些脱离硬件的环境.java里的虚拟机起到了一个类似以前学过的ODBC驱动程序的作用,它屏蔽了底层的差异,让操作系统通过虚拟机向下面看去,操作系统的感觉都是一样的. 有了这一层东西,我们彻底解开了底层硬件和运行操作系统之间的耦合,实现了一次编译,到处运行的梦

Java培训学习需要什么基础?

随着互联网的飞速发展,其对相关人才的需求更是不断增加.高薪资高待遇吸引不少其它行业的人员也投身于此.作为最受企业欢迎Java语言,更是备受学员青睐.来千锋报名学习Java的不少学员都会问到同一个问题,学Java需要什么基础? 在回答这个问题前,我们先来简单的了解一下Java语言. Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥有全球最大的开发者

C#基础一:面向对象基础

面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台,分布式系统,网络管理结构.CAD技术.人工智能领域.面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物. --百度百科 起初面向对象是专指在程序设计中采用封装,继承,多态等设计方法. 在C#学习的基础阶段,我们只需要知道就是指通过对象来调用方法就可以了,过于执着于概念反而念头不通达.想要深入的理解,生活上

python3基础学习笔记(基础知识)-01

python的基础学习: 数据类型:python是弱类型语言,在定义变量的时候,可以不直接制定数据类型. 1.Numbers: int 有符号整型    a = (-1)  a = 1 long 长整型 float 浮点型 complex 复数 2.boolean: True    Flase 3.String :字符串   a = "Hello World" 4.List :列表 有序  list1 = [] 5.Tuple : 元组  定义后不能被修改  a = (1,2,3) 6

java基础学习_面向对象(上)01_day07总结

==========================================================================================================================================================涉及到的知识点有:1:面向对象(掌握) (0)面向过程和面向过程开发 (1)面向对象思想概述 (2)面向对象的思想特点 (3)把大象装进冰箱(理解) (4)类与对象的关系 (5)类的定义及使用