Java面向对象笔记 • 【第6章 Java常用类】

全部章节   >>>>


本章目录

6.1 Object类

6.1.1 Object类概述

6.1.2 Object的常用方法

6.1.3 实践练习

6.2 String类和StringBuffer类

6.2.1 String类构造方法

6.2.2 String类常用方法

6.2.3 StringBuffer类常用方法

6.2.4 实践练习(一)

6.2.5 实践练习(二)

6.3 Math类

6.3.1 Math类运算操作

6.3.2 实践练习

6.4 日期处理类

6.4.1 Date类

6.4.2 Calendar类

6.4.3 SimpleDateFormat类

6.4.4 实践练习

总结:


6.1 Object类

6.1.1 Object类概述

Java可以把任何类型的对象赋值给Object类型的变量

如果一个类在声明时没有使用extends关键字为其显示指定父类,则该类默认继承Object类。

所有数组类型都继承于Object类(包括对象数组和基本数据类型数组)。

6.1.2 Object的常用方法

方法名

返回类型

说明

equals(Object obj)

boolean

判断指定对象与该对象是否相等

hashCode()

int

返回该对象的哈希码值

toString

String

使用字符串表示该对象信息

说明:

默认情况下,Object类的hashCode()方法根据该对象的内存地址来计算很多类都重写了Object类的hashCode()方法

当使用System.out.println()方法输出一个对象,或者将某个对象和字符串进行连接运算时,系统会自动调用该对象的toString()方法,返回该对象的字符串信息

Object类的toString()方法默认返回“运行时类名+@+十六进制的hashCode值”格式的字符串。

示例:演示Object常用方法

UserInfo userInfo=new UserInfo();
//当前对象与行创建的UserInfo对象比较内存地址
boolean  flag=this.equals(userInfo);
System.out.println("equals()返回值:"+flag);  
//调用本类中重写父类的toString()方法
String tsResult=this.toString();
System.out.println("toString()返回值:"+tsResult);
//调用hashCode()方法
int hashCode=this.hashCode();
System.out.println("hashCode()返回值:"+hashCode);
//重写Object类的toString()
 public String  toString(){ return "重写了父类的toString方法"; }

6.1.3 实践练习

 

6.2 String类和StringBuffer类

String类和StringBuffer类主要用于处理字符串,这两个类提供了许多字符串的实用处理方法

String类是一个不可变类(被final修饰),一个String对象所包含的字符串内容永远不会被改变

StringBuffer类是可变类,一个StringBuffer对象所包含的字符串内容可以  添加或修改

6.2.1 String类构造方法

构造方法

说明

String()

创建一个内容为空的字符串

String(String value)

初始化一个新创建的String对象,使其表示一个与参数相同的字符序列

String(byte[]bytes,Charset charset)

使用指定的字符编码,将指定的byte[]数组构造成一个字符串

String(char[]  char)

将制定的char[]数组构造成一个字符串

6.2.2 String类常用方法

方法名

说明

char charAt(index)

获取字符串中指定位置的字符。其中,参数index指的是字符串的序数,字符串的序数从0开始到length()-1

String concat(String str)

将该String对象与str连接在一起。与Java提供的字符串连接运算符“+”的功能相同

Boolean equals(Object anObject)

将该字符串与指定对象相比,如果两者包含的字符序列相等,则返回true;否则返回false

byte[] getBytes()

将该String对象转换成byte数组

int indexOf(String str)

找出str子字符串在该字符串中第一次出现的位置

int length()

返回当前字符串的长度

String replace(char oldChar,char newChar)

将字符串中的第一个oldChar替换成newChar

boolean endsWith(String sufffix)

String对象是否以sufffix结束

String substring(int beginIndex,int endIndex)

获取从beginIndex位置开始到endIndex(不包括)位置的子字符串

char[] toCharArray()

将该String对象转换成char数组

String toUpperCase()

将字符串转换成大写

示例:演示String类常用方法的使用

int index=value.indexOf("A"); //第一次出现指定字符串的下标,如果未出现,则返回-1
System.out.println("第一次出现字母A的下标:"+index);
int length=value.length();//字符串的长度
System.out.println("输入字符串的长度:"+length);
boolean  flag="Hello String".equals(value); //判断两个字符串字面值是否相等
System.out.println("控制台输入的字符串是否与Hello String字面值相等:"+flag);
boolean  tag=value.endsWith(“.java”); //判断结尾处是否包含“.java” 
System.out.println("控制台输入的字符串是否以.java结尾:"+tag);
String newValue=value.toUpperCase(); //转换大写字母
System.out.println("控制台输入字符串转换为大写字母值:"+newValue);
String val=value.substring(0, 2); //字符串截取
System.out.println("按照从0下标开始截取长度为2的子字符串:"+val);
String[] str=value.split("-"); //按照给定格式拆分字符串,返回一个String[]数组
System.out.println("将按照-拆分后返回的字符串数组遍历结果:");
for(String data:str){ System.out.println(data); }

注意:

==”比较的是两个对象的内存地址是否相同,而Object中的equals()方法默认比较的也是两个对象的内存地址是否相同

由于String类重写了Object类的equals()方法,重写的逻辑是比较当前调用对象与被比较对象的字符串字面值,如果相同则返回true,否则返回false

思考:

比较以下创建字符串对象的两种方式

  String str1="hello";

  String str2=new String("hello");

分析:

虽然引用变量str1与引用Str2最终的字面值相等,但是str1str2直接指向的不是同一对象

使用new String(“hello”)在创建对象时,首先在堆内存中创建一个”hello“对象,然后再查找常量池中是否存在“hello”字符串对象,如果存在不会在常量池中创建个新的“hello”对象否则创建一个新的“hello”对象

6.2.3 StringBuffer类常用方法

StringBuffer代表一个字符序列可变的字符串

StringBuffer提供的append()insert()reverse()以及setCharAt()等方法,可以改变    

StringBuffer对象的字符序列。

 

提醒:String是不可变类,如果使用String创建字符串,则会额外生成很多字符串,耗费系统资源

方法名

说明

StringBuff append(String str)

将字符串str追加到当前StringBuffer对象

StringBuffer  insert (intoffset ,  String str)                  

按顺序将字符串str插入到当前StringBuffer对象的

intoffset位置

StringBuffer reverse()

将当前StringBuffer对象的字符序列用其反转形式取代

void setCharAt(int index, char ch)

index索引处的字符设置为ch

示例:演示StringBuffer类常用方法的使用

StringBuffer  stringBuffer=new StringBuffer();
stringBuffer.append("Intelligence"); //追加字符串
System.out.println("当前stringBuffer对象值:"+stringBuffer);
System.out.println("在下标0插入Artificial后的值:"+stringBuffer.insert(0,"Artificial ")); //在指定位置添加字符串
stringBuffer.replace(10, 11, "-"); //将指定位置的内容进行替换	
System.out.println("stringBuffer长度:"+stringBuffer.length());
System.out.println("翻转后的内容:"+stringBuffer.reverse()); //将内容进行反转
String str="Java";
String newStr=str+" Android"; //将"Java"字符串与“ Android”字符串连接后赋值给newStr变量
System.out.println("str的值="+str);
System.out.println("newStr值="+newStr);
System.out.println("str==newString?="+(str==newStr));
StringBuffer sb=new StringBuffer();
sb.append("Cloud");
System.out.println("sb的值="+sb);
StringBuffer sBuffer=sb.append(" Computing");
System.out.println("sBuffer的值="+sBuffer);
System.out.println("sb==sBuffer?="+(sb==sBuffer));

6.2.4 实践练习(一)

6.2.5 实践练习(二)

 

6.3 Math类

6.3.1 Math类运算操作

Java提供“+”“-”“*”“/”和“%”等基本算术符运算符

对于较为复杂的运算,如三角函数、指数函数和绝对值函数等运算,基本运算符无法完成相关的操作

Java提供了工具Math类来完成这些复杂的运算

Math类的方法都是静态方法

 

示例:演示Math类常用方法的使用

System.out.println("27的算数立方根的值="+Math.cbrt(27));
System.out.println("4的平方根的值="+Math.sqrt(4));
System.out.println("3的2次方的值="+Math.pow(3, 2));
System.out.println("-4.5的绝对值="+Math.abs(-4.5));
System.out.println("8和10两个数的最大值="+Math.max(10, 8));
//返回一个随机数,该值的范围在0.0~1.0之间
System.out.println("产生的随机数值="+Math.random());
System.out.println("5.5四舍五入后的值="+Math.round(5.5));
System.out.println("弧度为π/6的正弦值="+Math.sin(Math.PI/6));

6.3.2 实践练习

 

6.4 日期处理类

6.4.1 Date类

Java提供了java.util.Date类处理日期、时间,Date对象既包含日期,也包含时间

Date类提供了两个构造器。

构造方法

说明

Date()

创建一个代表当前日期时间的Date对象

Date(long time)

根据指定long类型整数生成一个Date对象

说明:Date(long time),该构造器的参数表示创建的Date对象和GMT19701100:00:00之间的时间差,以毫秒作为计算单位

示例:演示Date类构造方法的使用

//使用无参构造方法创建Date对象
Date date=new Date();
System.out.println("当前系统时间:"+date);
Date newDate=new Date(1000*60*60*24*20);
System.out.println("1970年1月1日的20天后的时间="+newDate);

注意:

Date类的很多方法已经不推荐使用了例如,对时间进行加减运算,获取指定Date对象的年、月、日的所有方法都已被弃用

如果需要对日期进行这些运算,则应该使用Calendar工具类。

6.4.2 Calendar类

  • 由于Date类在设计上的一些问题,所以Java提供了Calendar类来更好地处理日期和时间
  • Calendar类是一个抽象类,所以不能实例化Calendar对象。但是Calendar类提供过了静态的方法getInstance(),以获得Calendar对象
  • CalendarDate类都是表示日期的工具类,两者可以直接相互转换

通过getInstance()方法创建Calendar的子类对象

Calendar  calendar=Calendar.getInstance();

Calendar中获取Date对象

Date date=calendar.getTime();

通过Date对象获得对应的Calendar对象

calendar.setTime(new Date());

示例:使用Calendar类实现对日期的操作

Calendar  calendar=Calendar.getInstance();
//创建一个距离1970年1月1日2天后的日期对象
Date date=new Date(1000*60*60*24*2);
System.out.println(date);
calendar.setTime(date); //将date对象赋给Calendar对象
System.out.println("年:"+calendar.get(Calendar.YEAR)+"年"); //获取年份	 
System.out.println("月:"+calendar.get(Calendar.MONTH)+1+"月"); //获取月份
System.out.println("日:"+calendar.get(Calendar.DATE)+"日"); //获取日期	
System.out.println("星期:"+(calendar.get(Calendar.DAY_OF_WEEK)-1)); //获取星期
System.out.println("本年的第:"+calendar.get(Calendar.DAY_OF_YEAR)+"天"); //这一天是一年中的第几天

6.4.3 SimpleDateFormat类

SimpleDateFormat是一个日期时间格式化类,该类位于java.text包中。

该类可以灵活地格式化Date对象,也可以用于解析各种格式的日期字符串

使用String类型的SimpleDateFormat类的构造器创建对象时,需要传入一个模板字符串

日期格式化模板标记

标记

说明

y

年。年份是4位数时,需要写成yyyy

M

年份中的月。年份是2位数时,需要写成MM

d

月中的天数。天数是2位数时,需要写成dd

H

一天中的24小时。小时是2位数,需要写成HH

m

小时中的分钟数。分钟是2位数,需要写成mm

s

分钟中的秒数。秒是2位数,需要写成ss

示例:SimpleDateFormat类具体操作

public class SimpleDateFormatUse {
	private static final String PARRENT1 = "yyyy-MM-dd HH:mm:ss";
	private static final String PARRENT2 = "yyyy年MM月dd日 HH时mm分ss秒";
	public static void parse(String strDate) {
	//创建SimpleDateFormat对象。y代表年、M代表月、d代表日,HH代表24小时制的时、m代表分、s代表秒
	SimpleDateFormat sdf = new SimpleDateFormat(PARRENT1);
	SimpleDateFormat simpleDateFormat = new SimpleDateFormat(PARRENT2);
	try {
		//将字符串日期转换成Date对象
		Date date = sdf.parse(strDate);
		//将date对象重新转换成“yyyy年MM月dd日 HH时mm分ss秒”格式的日期字符串
		String str = simpleDateFormat.format(date);
		System.out.println(strDate + ":解析成的Date=" + date);
		System.out.println("date对象按照"+PARRENT2+"格式转换后的字符串日期:");
		System.out.println(str);
	} catch (ParseException e) {e.printStackTrace();}
}

6.4.4 实践练习

 

总结:

  • Object类是所有Java类的父。可以根据具体的业务逻辑重写Objectequals()方法,用以判断两个对象是否相等。
  • String类是一个不可变类(被final修饰),一个String对象所包含的字符串内容永远不会被改变。而StringBuffer类是可变类,一个StringBuffer对象所包含的字符串内容可以被添加或修改。
  • Math类的random()方法随机生成一个0~1之间的double小数。
  • DateCalendar都是是时间处理类但是Calendar更好地处理日期和时间
  • Calendar类是一个抽象类,所以不能实例化Calendar对象,可以通过Calendar类提供静态方法getInstance()获得Calendar对象
  • SimpleDateFormat是一个日期时间格式化类,该类位于java.text包中。该类可以灵活地格式化Date对象,也可以用于解析各种格式的日期字符串,使用String类型的SimpleDateFormat类的构造器创建对象时,需要传入一个模板字符
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明金同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值