zoukankan      html  css  js  c++  java
  • 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");
  • 相关阅读:
    stenciljs 学习四 组件装饰器
    stenciljs 学习三 组件生命周期
    stenciljs 学习二 pwa 简单应用开发
    stenciljs ionic 团队开发的方便web 组件框架
    stenciljs 学习一 web 组件开发
    使用npm init快速创建web 应用
    adnanh webhook 框架 hook rule
    adnanh webhook 框架 hook 定义
    adnanh webhook 框架request values 说明
    adnanh webhook 框架execute-command 以及参数传递处理
  • 原文地址:https://www.cnblogs.com/l20902/p/10610949.html
Copyright © 2011-2022 走看看