• 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");
  • 相关阅读:
    LeetCode 230. 二叉搜索树中第K小的元素
    LeetCode 669. 修剪二叉搜索树
    LeetCode 94. 二叉树的中序遍历
    LeetCode 145. 二叉树的后序遍历
    LeetCode 144. 二叉树的前序遍历
    Not registered via @EnableConfigurationProperties or marked as Spring component
    maven依赖的报错Unable to import maven project: See logs for details
    GDIPlus的使用准备工作
    全局变量替代方案:控制反转,依赖注入
    MFC使用TRACKMOUSEEVENT触发mouseHover和mouseLeave
  • 原文地址:https://www.cnblogs.com/l20902/p/10610949.html
Copyright © 2020-2023  润新知