Java基础复习之类与对象、封装、构造方法、String类

//个人觉得重点的部分会用彩色标出

  • 面向对象思想

1.面向对象思想概述

面向过程思想: 遇到一个问题,一步一步的去解决他,强调的是过程(典型代表语言是C语言)

面向对象思想: 遇到一个问题,找一个可以解决问题的对象(可以是人,也可以是别的),强调是对象(典型代表语言Java)

 

      案例1:

      菜鸟买电脑

      面向过程思想: a.查资料 b.坐公交去中关村 c.货比三家 d.确定了服务员腿最长的那家

      e.交钱交货 f.回家

      面向对象思想: 找一个电脑高手,给他钱

 

      案例2:

      洗衣服

      面向过程思想: a.收集衣服 b.加水洗衣液 c.泡一会 d.自己搓 e.漂洗 f.拧干 d.先抖抖再晾起来

      面向对象思想: 1.找个全自动洗衣机,把衣服丢进去

      2.找一个人,把衣服给他

 

2.面向对象的三大特征

      a.封装(安全) b.继承(复用) c.多态(扩展)

 

3.类和对象

      Java中必须先有类,才能有对象

 

类是什么???

      一群具有相同属性和行为事物的集合,比如人类,狗类,猫类

对象又是什么???

      就是类中的一个具体存在,也称为实例

 

举例:

      车(类) 宝马车(类)  我家那辆三轮车(对象)

      动物(类) 狗(类) 大黄狗(类) 食堂门口那只狗(对象)

 

4.类和对象到底是什么关系

      对象 是以 类 作为 模板 创建出来的

      所以类中有什么,那么对象就应该有什么

 

5.类的定义***************

      类的定义:类名,类的属性,类的行为

格式:

      public class 类名{ //类名大驼峰

      //类的属性(成员变量)

           数据类型 成员变量名1;

           数据类型 成员变量名2;

     ...

      //类的行为(成员方法) 没有static关键字

      public 返回值类型 方法名(参数列表){

            方法体

            return 返回值;

      }

      }

 

6.对象的创建和使用***************

对象的创建格式:

      类名 对象名 = new 类名();

通过对象访问成员变量:

      System.out.println(对象名.成员变量名)

      对象名.成员变量名 = 值;

通过对象调用成员方法:

      对象名.成员方法名(参数);

 

默认值问题:

成员变量是有默认值的!!!!

整数             0

浮点数            0.0

字符             '空格'

布尔            false

引用类型      null

 

7.对象的内存图:

a.对象名/对象引用 保存的是对象的地址

b.真正的对象保存到堆中

c.真正的对象中,有自己独有一份成员变量,没有真正的方法,只有方法的标记

d.栈有一个特点,先进后出, 堆中真正对象,由JVM的小弟GC负责回收

 

 

8.成员变量 和  局部变量

成员变量:直接定义在类中的变量

局部变量:定义类中的方法中的变量

 

成员变量和局部变量的五点区别:

a.定义位置不同

b.初始值不同/默认值不同

局部变量 没有默认值 ,不赋值不能使用

成员变量 有默认值,不同的数据类型不同的默认值

c.作用域不同(有效范围)

局部变量 只能在局部使用,在哪个方法中定义的只能在该方法中使用

成员变量 在该类中都可以使用

d.内存位置

局部变量 跟随方法的调用,进入栈中

成员变量 跟随对象的创建,进入堆中

e.生命周期

局部变量 跟随方法的调用而出现,跟随方法的结束而销毁

成员变量 跟随对象的创建而出现,跟随对象的销毁而销毁

  • 封装

1.封装的概述

封装就是对我们写的对象的一种保护,防止数据被随意访问和修改

2.封装的原则

a.把需要隐藏的属性 隐藏起来

b.对外提供一种公共访问方式

3.封装的步骤

a.java提供关键字,private 用来修饰成员变量

b.提供一对get/set方法,通过该方法可以访问成员变量

private关键字的作用

a.private是一种最小的权限修饰符

b.能修饰成员变量和成员方法

c.被private修饰的成员,只能在类的内部访问

private的使用格式

格式: private 数据类型 成员变量名;

例如:

public class Dog{
			private int age; //成员变量私有化了
			//get方法,获取值,没有参数,有返回值
			public int getAge(){
				return age;
			}
			//set方法,修改值,没有返回值,有参数
		        public void setAge(int a){
				age = a;
			}
			}

生成get和set方法快捷键: alt+INS 点击 Getter/Setter

 

4.封装的优化一:

     使用this关键字:

this关键字的作用:

     解决局部变量和成员变量同名的情况

     如果同名优先使用局部变量,如果使用 this.变量名,就可以访问成员变量

 

比如:

public class Dog{

     private int age; //成员变量私有化了

     //get方法,获取值,没有参数,有返回值

     public int getAge(){

     return age;

     }

//set方法,修改值,没有返回值,有参数

public void setAge(int age){

     age = age; //如果这么写 局部变量 再赋值给本身

     this.age = age;//把局部变量age,赋值给成员变量this.age

     }

}

扩展: this底层的含义是什么???

     this就是一个对象,代表当前对象,方法是那个对象调用的,那么方法中this就代表那个对象

 

5.封装的优化二_构造方法

     a.什么是构造方法

     给对象的成员变量默认值的方法

     b.构造方法的格式:

     public 类名(){

     作用: 给成员变量赋默认值的

     }

     注意:构造方法没有返回值,不写返回值类型(不是void!!!!)

     注意:其实我们以前说的固定格式

     类名 对象名 = new 类名();//这里的类名() 其实就是调用了构造方法

 

c.构造方法的重载

重载的构造方法:

public class Dog{

     private int age; //成员变量私有化了

     private String name;//

     //无参构造

     public Dog(){

 

     }

     //重载构造

public Dog(int age){

     this.age = age;

}

public Dog(String name){

     this.name = name;

}

public Dog(int age,String name){

     this.age = age;

     this.name = name;

     }

}

d.构造方法的注意事项

i.如果一个类中没有写任何构造,那么默认有一个无参构造

ii.如果我们写了构造,那么系统就不会生成无参构造

iii.构造方法也可以重载

 

e.JavaBean类的定义******************************

JavaBean是Java中定义类的标准

i.所有成员变量必须私有化(private)

ii.为私有化的成员变量提供Getter/Setter

iii.标准的JavaBean中必须有无参构造

iv. 标准的JavaBena中一般还会提供全参构造

总结 JavaBean = private+get/set+无参构造+全参构造

  • String类

1.String类是什么

     就是字符串

2.String类特点:

     a.String name = "abc";

     打印name时,会出来内容而不是地址(JVM优化)

     b.字符串的内容具有不可变性

     String name  = "abc";

     name+="java";

     System.out.println(name)

     c.字符串常量具有共享性

     String s1 = "abc";

     String s2 = "abc";

     那么s1和s2保存的地址一样,共享一个"abc"字符串

     d."abc" 等效于 char[] data={ 'a' , 'b' , 'c' }。

3.String对象的几种创建方式

     a.最常用

     String name = "java";

     b.最没用

     String name = new String();//空内容字符串对象

     c.最啰嗦

     String name = new String("java");

     d.字符数组

     char[] chs = {'j','a','v','a'};

     String name = new String(chs);

     e.字节数组

     byte[] bs = {97,98,97,98};

     String name = new String(bs);

4.字符串对象中各种方式

     a.判断功能的方法

     boolean equals(String anotherString); 比较两个字符串的内容是否相同

     boolean equalsIgnoreCase(String anotherString); 忽略大小写比较两个字符串内容是否相同

 

     b.获取功能的方法

     int length(); 获取字符串的长度(字符的个数)

     char charAt(int index); 获取字符串某个字符

 

     public String concat(String str);//拼接字符串,相当于"+"号,返回拼接之后的字符串

     public int indexOf(String str);//查找子串,第一次出现的索引

 

     String substring(int beginIndex);//从开始下标截取字符串,直到结束,返回值截取到的字符串

     String substring (int beginIndex, int endIndex);

     //从开始下标,到结束下标截取字符串(含头不含尾),返回值截取到的字符串

     c.转换功能的方法

     char[] toCharArray();//将字符串的内容,转成字符数组

     byte[] getBytes(); // 将字符串的内容,转成字节数组

     String replace(String target, String replacement);//替换

     String toUpperCase(); //转成大写字符串

     String toLowerCase(); //转成小写字符串

d.切割功能

String[] split(String 切割符);切割字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值