java基础:5.1 面向对象、类的关联 聚合 组合、正则表达式

上一个礼拜太忙了,今天开始恢复java的学习~

目录

1、面向过程——面向对象的区别

2 、类的关联 聚合 组合

3、string

3.1 创建

3.2不可变与限定字符串

3.3正则表达式


1、面向过程——面向对象的区别

传统的面向过程式编程是动作驱动的,数据和动作是分离的。面向对象编程的范式重点在于对象,动作和数据一起定义在对象中。

面向过程的范式重点在于设计方法。面向对象的范式将数据和方法耦合在一起构成对象。使用面向对象范式的软件设计重点在对象以及对对象的操作上

一个简单的计算BMI类,

/*   BMI:name,gender(male-1,female-0),age,weight,height    */
public class BMI {
	private String name;
	private int age;
	private String gender; // male=1 ; female = 0;
	private double weight; //KG
	private double height; //m
	
	public BMI(String name,int gender,int age,double weight,double height) {
		this.name = name;
		this.age = age;
		this.gender = (gender==1) ? "male" : "female";
		this.weight =weight;
		this.height = height;
	}
	public BMI(String name,double weight,double height) {
		this(name,1,20,weight,height);
	}
	
	public double getBMI() {
		double bmi = this.weight / this.height / this.height ;
		return bmi;
	}
	
	public String getStatus() {
		double bmi = getBMI();
		if (bmi < 18.5)
		return "Underweight";
		else if (bmi < 25)
		return "Normal";
		else if (bmi < 30)
		return "Overweight";
		else
		return "Obese";
	}
	
	public String getName() {
		return this.name;
	}
	public String getGender() {
		return this.gender;
	}
	public int getAge() {
		return this.age;
	}
	public double getWeight() {
		return this.weight;
	}
	public double getHeight() {
		return this.height;
	}
}

2 、类的关联 聚合 组合

关联:关联表示两个类之间的活动。下图,学生选课,老师教课。


聚集/组合:聚集是关联的一种特殊形式,代表了两个对象之间的归属关系

1 to 1 :组合

N to 1 :聚集


3、string

3.1 创建

首先,明确一点:字符串是对象。它有charAt(int),length()等方法。

String message = new String("welcome");
String message = "welcome";

上面两句同效,#2 java将字符串直接量看作String对象。

String 变量存储的是对String 对象的引用,String 对象里存储的才是字符串的值。

3.2不可变与限定字符串

String s = "java";
s = "HTML";

对上面的程序,#2不能改变s的值。第一条语句创建了一个内容为"]ava的String 对象,并将其引用賦值给S,第二条语句创建了一个内容为"HTML"的新String 对象,并将其引用賦值给s。陚值后第一个String 对象仍然存在,但是不能再访问它,因为变量s现在指向了新的对象。String 对象是不可变的,它的内容是不能改变的

因为字符串在程序设计中是不可变的,但同时又会频繁地使用,所以java虚拟机为了提高效率并节约内存,对具有相同字符序列的字符串直接量使用同一个实例。这样的实例称为限定的字符串。

repalce和split是修改和替换方法,它们也不能修改字符串的内容,而是返回一个源自原始字符串的新字符串(并未改变原始字符串!)

3.3正则表达式

正则表达式(regular expression)(缩写regex) 是一个字符串,用于描述匹配一个字符串集的模式。可以通过指定某个模式来匹配、替换或分隔一个字符串。这是一种非常有用且功能强大的特性。

String中的match方法

"Java is fun".matches("Java.*"); // 子串.* 与0 个或多个字符相匹配。

"440-02-4S34".matches(\d{3}-\d{2}-\d{4}"); //\d 表示单个数字位,\d{3}表示三个数字位。

String s = "a+b$#c".replaceAll("[$+#]","NNN"); //用NNN代替s中的所有$或者+或者#

String[]  sa = "java,C++.C#?C;pyton".split("[,.;?]"); //主要出现,.;?,就把字符串划分成一段一段的

3.4常用方法

字符串转换成数组

char[] chars = "Java".toCharArray();

数值转换成字符串

String.value0f(S .44);  //char,char[],int,long,float,double,boolean

格式化字符串。format 方法返回一个格式化的字符串,而printf 方法显示一个格式化的字符串

String s = String.format("%7.2f%6d%-4s",45.556,14,"AB");
原文地址:https://www.cnblogs.com/l20902/p/10610949.html