从零开始学Java-04面向对象编程

一、面向对象

主要操作是标准的模块化的设计,进行重用设计,使用的时候 根据标准进行模块的拼装就有了Java的三大特效:封装,继承,多态

  • 封装:将对象的属性和实现细节隐藏起来,外部不可见,仅对外提供公有的访问方式
  • 继承:继承的类可以从被继承的类中获得一些属性和方法,在已有的基础上进行扩充。继承是作为多态的前提
  • 多态:只要实现或继承了同一个类或者接口,那么就可以使用父类中相应的方法

三个步骤

  • OOA:面向对象分析
  • OOD:面向对象设计
  • OOP:面向对象编程

二、类和对象

类是对某一类事物的共性的抽象概念,对象描述的是某一个具体的产物
类中会有:

  • 成员属性(Field):详细信息
  • 成员方法(Method):定义对象具有的处理行为
public class dog{ //类:狗
	private String name; //私有的属性:名称
	private int age; //私有的属性: 年龄
	public void eat(){//方法:吃饭
	System.out.println("吃饭)
	}
	public void dog(){} //空参构造
	public dog(String name){
			this.name = name;
	}//有参构造
	public dog(String name, int age){
		this.name = name;
		this.age = age;
	}//全参构造
	
	public String getName(String name){
 		return this.name = name; //this关键字
	}
	public void setName(String name){ //设置和修改数据
		this.name = name;
	}
	
}

垃圾空间:没有被任何栈内存指向的堆内存空间,所有的垃圾都将被GC(垃圾收集器)不定期回收,不定期释放内存空间,垃圾过多将影响GC的处理性能
一个栈内存只能够保存有一个堆内存的地址数据

1、 构造方法:类对象的属性初始化

要求如下:

  • 构造方法名称与类名称保持一致
  • 构造方法没有返回值
  • 构造方法在使用new 实例化的时候自动调用

2、匿名对象

只在生产的时候在堆中开创空间,不在栈中记录地址值,结果是只使用一次,就被GC 回收了


三、 关键字

this关键字

  • 当前类中的属性:this.属性
  • 当前类中的方法(普通方法、构造方法):this()、this.方法名()
  • 描述当前对象:

static关键字

用来修饰类的成员方法,类的成员变量,编写static代码块
被static关键字修饰的方法或者变量,不需要依赖对象来访问,类被加载了就可以天赋哦类名访问

  • static 修饰成员方法:静态方法,不依赖任何对象就可以进行访问,不能访问类的非静态的成员变量和成员方法
  • static修饰成员变量:被所有对象共享,类初次加载的时候初始化,在内存中只有一个副本
  • static修饰代码块:静态代码块,只会在类初次加载的时候执行一次,可以用来优化程序性能

final关键字

  • 修饰类:表明这个类不能被继承,类中的成员变量和成员方法被隐式的指定为final
  • 修饰变量:基本数据类型:不能更改;引用类型:不能指向另外的对象
  • 修饰方法:private 方法被隐式的指定为final方法

三、数组

内存中存储相同数据类型的连续的空间,且有固定长度,数组长度一旦声明,就不可以改变和追加
数组是对象:具有Java中其他对象的基本特点:封装了数据,可以访问属性,可以调用方法

四、字符串String

Java中的字符串是存放在数据区(静态区),以Unicode编写的字符集合
String本身包装的是一个数组

  • 不可变字符串:String类:字符串对象创建完毕后就内容 是不能改变的(final)
  • 可变字符串:StringBuffer和StringBuild 类 的对象内容是可变的

  • 直接赋值实例化:String a= “xxx” String b = “xxx” a=b;true(数据共享)JVM中底层有一个专门的字符串池→本质是一个数组,池中没有数据,保存新数据,赋值先查,没有,就开辟新空间,保存新数据,相同数据定义的时候,减少对象的产生,提升性能(入池重用)
  • 构造方法实例化:String c = new String(“xxx”); 新开辟堆内存空间 存在垃圾空间

String 常量池

  • 静态常量池:程序在加载的时候会自动将此程序之中保存的字符串,常量,类的方法和信息,全部进行分配
  • 运行时常量池:当一个程序加载后,里面有一些变量,提供的常量池

String的常用方法

JavaDoc Java文档API
  • 类的完整定义
  • 类相关说明信息
  • 成员属性摘要
  • 构造方法摘要
  • 方法摘要
字符串常用方法
//字符
public StringChar[] value)//字符数组全部转成字符串
public StringChar[] value,int offset,int count)//从offset开始总共count个字符转为字符串
public char[] toCharArray()//字符串转字符数组 
//字节数组转换
public StringByte[] bytes)//字节数组转为字符串
public StringByte[] bytes,int offset,int count)//从offset开始总共count个字节转为字符串
public byte[] getBytes()//将字符串转为字符数组
public byte[] getBytes(String charsetName)throws UnsupportedEncodingException//编码转换

String a = "test1"
String b = "test1"
a==b  //比较地址
a.equals(b)//比较值
a.equalsIgnoreCase(b)//不区分大小写比较
String c ="m"
String d = "M"
a.compare(d) = 32
a.compareIgnoreCase(d) = 0

contains //判断字符串是否存在
indexOf //从头查找指定字符串的位置,找不到返回-1
startsWith //判断 是否以xxx开始
endsWith //判断 是否以xxx结束

//替换
public String replaceAll(String regex,String s) //全部替换
public String replaceFirst(String regex,String s)//替换首个
//设计到**正则表达式**!
//拆分
public String[] split(String regex)//全部拆分
public String[] split(String regex,int x)//拆成x个
//拆不开 涉及到正则表达式,需要转义  \\
//截取
subString(int x)  //从x所有截取到结尾
subString(int x,int y)//从索引x截取到y

//格式化字符串 JDK1.5开始
format//常用于日期格式化

a.contact("1)  //连接
intern//字符串入池
isEmpty//判空字符串“”   有实例化对象   
length() //计算长度
trim() //去除左右空格
toUpperCase()//转大写
toLowerCase()//转小写


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值