面向对象的应用

面向对象的应用

字符串的创建

直接写字符串创建字符串对象,该字符串会在数据段的字符串常量池中产生对象。

  • String str1 = “Hello”;

使用连接符(+)创建字符串对象,字符串可以连接任何其它数据。

  • String str2 = “Hello”+23+23;//“Hello2323”

  • String str3 = 23+23+“World"+true;//“46Worldtrue”

使用new创建字符串对象

  • String str4 = new String(“小明”);
package cn.iceson;

public class StringDemo {
	public static void main(String[] args) {
		//直接赋值,会在字符串常量池中产生对象
		String str1="abc";
		//使用字符串连接符创建,实际上是通过StringBuffer或StringBuilder来构建对象
		String str2=true+"abc"+123;
		//使用new关键字创建字符串对象
		String str3=new String("aaa");
	}
}

String类常用方法

  • public int length();//得到长度

  • public char charAt(int index);//根据下标得到字符

  • public int indexOf(String str);//根据字符得到下标

  • public String substring(int beginIndex, int endIndex);//截取子字符串

  • public String trim();//去掉前后空格

  • public int compareTo(String anotherString);//比较字符串大小

  • public boolean endsWith(String suffix); //判断是否以指定字符串结尾

  • public String[] split(String regex);//根据正则表达式拆分字符串

  • public replace(char oldChar, char newChar);//替换字符串

  • public replaceAll(String regex, String replacement);

  • public boolean equal(Object obj);//判断字符串是否相等

package cn.iceson2;

public class StringDemo {
	public void m1(){
		String str1=" hello world!";
		System.out.println("字符串的长度:"+str1.length());//得到字符串的长度
		System.out.println("下标为4的字符:"+str1.charAt(4));//根据下标得到字符
		System.out.println("字符w的下标:"+str1.indexOf('w'));//获取字符在字符串中第一次出现的下标
		System.out.println("截取字符串:"+str1.substring(1, 3));截取子字符串[1,3)
		System.out.println("去掉前后空格:"+str1.trim());//去掉前后空格
		System.out.println("未去掉前后空格:"+str1);
		String str2="hfrgg";
		/**
		 * 如果String对象按字典顺序排列在参数字符串之前,结果为负整数。 结果是一个正整数,
		 * 如果String对象按字典顺序跟随参数字符串。
		 *  如果字符串相等,结果为零; compareTo返回0 ,当equals(Object)方法将返回true 。 
		 */
		System.out.println("比较字符串大小:"+"awdsd".compareTo("b"));
		
		System.out.println("判断是否以指定字符串结尾:"+str1.endsWith("d!"));
		
		System.out.println("根据正则表达式拆分字符串:"+str1.split(str2));
		
		System.out.println("替换字符串:"+str1.replace("hello ", "你好,"));
		System.out.println("替换所有字符:"+str1.replaceAll(" ", "222"));
		
		System.out.println(str1.equals(str2));
	}
	public void m2(){
		String str="abc hello world I am Java";
		System.out.println(str.split(","));
		String[] str2=str.split(" ");
		for (String string : str2) {
			System.out.println(string);
		}
	}
	public static void main(String[] args) {
		new StringDemo().m2();
	}
}

StringBuffer与StringBuilder

StringBuffer与StringBuilder的方法都是一样的,都是用于构造字符串

StringBuffer与StringBuilder的区别:StringBuffer是线程安全的,StringBuilder是线程不安全的,所以性能高于

StringBuffer.

package cn.iceson;

public class Test {
	public static void main(String[] args) {
		//创建一个字符串缓冲序列对象,默认16个字符大小的空间
		StringBuffer buffer=new StringBuffer();
//		StringBuilder builder=new StringBuilder();
		
		//append在末尾追加字符串
		buffer.append(true);
		buffer.append('A');
		buffer.append(123);
		buffer.append("good 我胡汉三然后就反复活跃的");
		
		//insert根据下标添加字符串,指定的位置必须是字符串中已有的位置或字符串末尾的位置。
		buffer.insert(16, 23);
		System.out.println(buffer);
		//导致该字符序列被序列的相反代替。 
		System.out.println(buffer.reverse());
	}
}

==和equals()

==用于比较地址,equals)用于比较内容

equals()是Object类中的方法,子类可重写

String中重写了equals方法,用于比较字符串内容

package cn.iceson2;

public class Test {
	public static void main(String[] args) {
		/**
		 * 比较字符串是否相等
		 * ==比较的是地址  equals比较的是内容
		 */
		String s1="abc";
		String s2="abc";
		String s3=new String("abc");
		String s4=new String("abc");
		System.out.println("s1==s2:"+(s1==s2));
		System.out.println("s2==s3:"+(s2==s3));
		System.out.println("s3==s4:"+(s3==s4));
		
		boolean b1=s1.equals(s2);
		System.out.println("b1----"+b1);
		boolean b2=s2.equals(s3);
		System.out.println("b2----"+b2);
		boolean b3=s3.equals(s4);
		System.out.println("b3----"+b3);
	}
}

Math类

不能创建Math类对象,因为构造方法被private修饰( public修饰的构造方法在任何地方都可以被触发,而private

修饰的构造方法只能在当前类中触发)

Math类中所有的成员都是类成员,使用时直接使用类名点访问,详见原代码或帮助文档。

最常用的方法只有一个public static double random();该类方法返回大于或等于0.OD,小于1.0之间的随机数。

package cn.iceson;

public class MathDemo {

	public static void main(String[] args) {
		
		System.out.println(Math.abs(-22));
		System.out.println(getType(Math.pow(2, 3)));//java.lang.Double
		double d1=Math.random();//获取0~1之间的随机数
		System.out.println(d1);
		
		int d2=(int) (Math.random()*10);
		System.out.println(d2);

	}
	public static String getType(Object obj) {
        return obj.getClass().getName();
    }

}

Random

用于取得随机值

示例︰创建Random对象,得到随机boolean值,得到随机整数,得到大于等0,小于10的整数。

public void m1(){
		Random r=new Random();
		boolean b=r.nextBoolean();//得到随机的布尔值
		int i=r.nextInt();//得到随机的整型数据
		int j=r.nextInt(10);//得到随机整数 j>=0 & j<10
		
		System.out.println("布尔类型:"+b);
		System.out.println("整数类型:"+i);
		System.out.println("j>=0 & j<10范围整数类型:"+j);
	}

	/**
	 * 使用种子创建Random对象,无论程序运行多少次,得到的都是同一个随机值
	 * 使用同一个种子创建Random对象时,如果获取随机数的顺序相同,那么得到的随机值还是一样的
	 */
	public static void m2(){
		Random r=new Random(10);
		
		boolean b=r.nextBoolean();
		int i=r.nextInt();
		int j=r.nextInt(10);
		System.out.println("b="+b);
		System.out.println("i="+i);
		System.out.println("j="+j);
	}

	/**
	 * 使用当前时间的毫秒值作为种子,那么这个种子是唯一的,获得的随机数总是不同的。
	 */
	public static void m3(){
		Random r=new Random(System.currentTimeMillis());
		
		boolean b=r.nextBoolean();
		int i=r.nextInt();
		int j=r.nextInt(10);
		System.out.println("b="+b);
		System.out.println("i="+i);
		System.out.println("j="+j);
	}

System

System.out.println()∶标准输出语句

System.out.print()与前面类似,只是不换行

System.exit(0);退出程序

System.currentTimeMillis();返回从1970年1月1号0点0分0秒O毫秒到现在为至的毫秒数

package cn.iceson3;

import java.io.InputStream;
import java.io.PrintStream;

public class SystemDemo {
	public static void main(String[] args) {
		
		PrintStream out=System.out;//类名
		out.print("abc");//对象
		
		//第一个.表示类名.,第二个.表示对象.。
		System.out.println("换行输出");
		System.out.print("不换行输出   ");
		
		InputStream in=System.in;
		System.out.println(in);
		
		System.out.println(System.currentTimeMillis());
		System.exit(0);
		
		System.out.println("不会被打印的语句");
		
	}
}

Date

Date对象用于封装时间

使用当前时间初始化Date对象· Date()

使用用指定时间初始化Date对象

  • Date(int year, int month, int date)

  • Date(int year, int month, int date, int hrs, int min)

  • Date(int year, int month, int date, int hrs, int min, int sec).Date(long date)

使用当前时间初始化新建的Date对象,并取出年月日星期几点分秒

package cn.iceson4;

import java.util.Date;

public class DateDemo {
	public static void main(String[] args) {
		
		//以指定时间创建对象
		Date date=new Date(2021, 5, 30, 21, 31, 59);
		
		//以当前时间创建对象
		Date date2=new Date();
		System.out.println(date.getYear());//年份+1900
		System.out.println(date.getMonth());//月份从零开始算
		System.out.println(date.getDate());//号数,一个月中的第几天
		System.out.println(date2.getDay());//一个星期的第几天,以星期天为0开始算
		System.out.println(date.getHours());//小时
		System.out.println(date.getMinutes());//分钟
		System.out.println(date.getSeconds());//秒
		
		System.out.println(date2.getTimezoneOffset());//得到时区,东为负,西为正,北京为东八区
		
	}
}

通过Calendar还可以得到Date对象,示例

Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();

Date对象中封装的时间可被改变,使用setX()方法即可

public static void m1(){
		Date date=new Date();
		date.setDate(21);//号数,一个月中的第几天
		date.setYear(200);
		System.out.println(date.getDate());//21号
		System.out.println(date.getYear());//(200+1900)年
	}

Calender

Calender也是用于操作时间,大部分情况下使用Calender替换Date

Calender的创建

-Calendar calendar = Calendar.ggtInstance();得到时间

  • int year = calendar.get(Calendar.YEAR);//显示年份
  • int month = calendar.get(Calendar.MONTH);//显示月份(从0开始,
    实际显示要加─)
  • int day_of_year = calendar.get(Calendar.DAY_OF_YEAR);//今年的
    第N天
  • int day_of_month = calendar.get(Calendar.DAY_OF_MONTH);//本月第N天
  • int hour_of_day = calendar.get(Calendar.HOUR_OF_DAY);//二十四小时制
  • int minute = calendar.get(Calendar.MINUTE);//当前分钟数
package cn.iceson;

import java.util.Calendar;

public class Test {
	public static void main(String[] args) {
		Calendar calendar=Calendar.getInstance();
		
		int year=calendar.get(Calendar.YEAR);//得到年
		System.out.println(year);
		
		//得到月,从0开始算
		int month=calendar.get(Calendar.MONTH);
		System.out.println(month);
		
		int day1=calendar.get(Calendar.DATE);//表示一个月中的第几天
		int day2=calendar.get(Calendar.DAY_OF_MONTH);//表示一个月中的第几天
		int day3=calendar.get(Calendar.DAY_OF_WEEK);//表示一个星期中的第几天
		int day4=calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);//表示一个月中的第几周
		int day5=calendar.get(Calendar.DAY_OF_YEAR);//表示一年中的第几天
		
		System.out.println("day1:"+day1);
		System.out.println("day2:"+day2);
		System.out.println("day3:"+day3);
		System.out.println("day4:"+day4);
		System.out.println("day5:"+day5);
		
		int hour1=calendar.get(Calendar.HOUR);//十二小时制
		int hour2=calendar.get(Calendar.HOUR_OF_DAY);//二十四小时制
		System.out.println("hour1:"+hour1);
		System.out.println("hour2:"+hour2);
		
		int minute = calendar.get(Calendar.MINUTE);
		System.out.println("minute--"+minute);
	}
}

修改calendar封装的时间

  • calendar.add(Calendar.HOUR_OF_DAY,3);//3小时以后
  • calendar.add(Calendar.MINUTE,15);//15分钟以后
  • calendar.add(Calendar.MINUTE,-30);// 30分钟前
  • calendarsetTime(new Date());//使用Date对象重置时间

SimpleDateFormat

可以对Date对象格式化后得到格式规定的字符串时间表示

  • 1 )yyyy表示年

  • 2 ) dd表示日

  • 3 ) hh表示时

  • 4 ) ss表示秒

  • 5)MM与yyyy、 dd在一起表示月;mm与hh、ss在一起表示分

package cn.iceson;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
	public static void main(String[] args) {
		Date date=new Date();//以当前时间创建对象
		//创建对象,参数表示需要显示的时间格式
		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
		
		//将Date对象进行格式化
		String time=simpleDateFormat.format(date);
		System.out.println(time);//例如:2021/06/01 04:55:50
	}
}
作业:1、根据以下提供的字符串内容,将字符串中包含的数字取出。
temp20light150lxhum80%end
package cn.iceson2;

public class Test {
	public static void m1(String str){
		StringBuffer bfBuffer=new StringBuffer();
		for (int i = 0; i < str.length(); i++) {
			if ((int)(str.charAt(i))>=48&&(int)(str.charAt(i))<=57) {
				bfBuffer.append(str.charAt(i));
			}
		}
		System.out.println(bfBuffer);
	}
	public static void main(String[] args) {
		Test.m1("temp20light150lxhum80%end");
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值