Java基础-常用类-String、Math、Random

本文详细介绍了Java中的String类,包括其不可变性、构造方法、常用方法如length()、isEmpty()、equals()等。此外,还讨论了Math、Random及Arrays工具类的基本用法,并提及了包的概念及其作用。通过对字符串操作、数学运算和数组操作的实例,展示了这些类和方法的实际应用。
摘要由CSDN通过智能技术生成

常用类

学习的标准:

1、创建对象,有什么属性,有什么方法(方法名,参数,返回值)

2、类,方法体如何实现的

学习的方法:

1、Ctrl+Shift+T 搜索一个类,通过outline查看类的构成

2、API帮助文档

String

String类代表字符串。Java 程序中的所有字符串字面值(如 “abc”)都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。因为 String 对象是不可变的,所以可以共享。

属性

怎么理解字符串是常量?从String类中的属性入手:

类中维护着一个final类型char[] value,用来存储所有字符。可见此value一赋值不可再更改。

我们之前写的代码中,str是变量,其中先是"a"的地址,执行第2句的连接,因为"a"是常量,不可更

改,所以必须新开空间来存储连接后的“ab”,变量str中存储的更新为"ab"的地址。所以str引用是变

量,字符串对象是常量。

构造方法

除了String str=“a”;用字面量来创建字符串对象,还可以使用构造方法。常用的构造方法有

String()

String(char[] ch)

String(String str)

public final class String 

implements java.io.Serializable, Comparable<String>, CharSequence { 

/** The value is used for character storage. */ 

private final char value[]; 

}

String str="a"; 

str=str+“b”;构造方法的作用主要是给属性赋值,所以从源码中可以看出,不管是哪个构造方法都给value赋值。

补充:类中除了构造方法给value赋值以外,并未提供set方法。甚至get方法都没有。如果先获取

value的值,可通过char[] toCharArray();

举例:判断字符串是否是回文串

常用方法

int length() 获取字符串的长度

判断密码是否至少是6位

判断身份证号是否是18位

boolean isEmpty() //判断字符串是否为空,即长度是否为0

//String() 

String s=new String(); 

//String(char[]) 

char[] chs= {'a','b','c'}; 

String s2=new String(chs); 

//String(char[] ch,int offset, int count) 

String s3=new String(chs,0,2); 

//String(String str) 

String s5=new String("abc"); 

public String() { 

	this.value = "".value; 

}

public String(char value[]) { 

	this.value = Arrays.copyOf(value, value.length); 

}

public String(String original) { 

	this.value = original.value; 

	this.hash = original.hash; 

}

public boolean isHuiWen(String str) { 

boolean flag=true;//true是 false不是 

char[] chs=str.toCharArray(); 

int len=chs.length; 

for (int i = 0; i < len/2; i++) { 

	if(chs[i]!=chs[len-1-i]) { 

			flag=false; 

			break; 

	} 

}

return flag; 

}//判断一个字符串是否为空 

//null和“”都认为是空 

public boolean isEmpty(String s) { 

	return s==null||s.isEmpty(); 

}

== 比较地址。

常量之间用+号连接,编译时会自动连接;变量参与,都会新开空间产生新对象。

new关键字也会产生新对

String s1="a"; 
String s2="a"; 

System.out.println(s1==s2);//true 

String s4="ab"; 

String s5="a"+"b";//两个常量之间连接,编译时就会连接成功 

System.out.println(s4==s5);//true 

String s6=s1+"b"; 

System.out.println(s4==s6);//false 

String s3="b"; 

String s7=s1+s3; 

System.out.println(s4==s7);//false 

String s8="abc"; 

String s9=new String("abc"); 

System.out.println(s8==s9);//false

boolean equals(Object anObject) //比较值是否相等。

//String类源码 ,建议查看 

public boolean equals(Object anObject) { 
			if (this == anObject) { 
				return true; 
			}
		if (anObject instanceof String) { 
			String anotherString = (String)anObject; 
				int n = value.length; 
					if (n == anotherString.value.length) { 
						char v1[] = value; 
						char v2[] = anotherString.value; 
								int i = 0; 
						while (n-- != 0) { 		
							if (v1[i] != v2[i]) 
							return false; 
								i++; 
							}
						return true; 
						} 
					}
				return false; 
}

练习:输入两次密码,判断是否输入一致

String toLowerCase() 大写转换成小写

String toUpperCase() 小写转大写

boolean equalsIgnoreCase(String anotherString) 忽略大小写比较练习:输入验证码,忽略大小写比较是否相等

int compareTo(String anotherString) 比较 返回值含义:0=等于 正数=大于 负数=小于

//对字符串数组升序,冒泡实现 

//此代码选择学习 

public static void main(String[] args) { 

String[] names= {"Lily","Apple","Tom","Jack"}; 

sort(names); 

for (String string : names) { 

System.out.print(string+" "); 

} 

}

public static void sort(String[] strs) { 

int len=strs.length; 

for (int i = 0; i < len-1; i++) { 

for (int j = 0; j < len-1-i; j++) { 

if(strs[j].compareTo(strs[j+1])>0) { 

String temp=strs[j]; 

strs[j]=strs[j+1]; 

strs[j+1]=temp; 

} 

} 

} 

}

char charAt(int index) 返回对应index位置上的字符 ,index的范围[0,len-1]

String str="hello"; 

System.out.println(str.charAt(0));//h 

//System.out.println(str.charAt(5));//越界 StringIndexOutOfBoundsException 

//从键盘上输入一个字符,转换成char类型 

Scanner input=new Scanner(System.in); 

System.out.println("继续吗?y/n:"); 

String s=input.next(); 

char c=s.charAt(0); 

System.out.println(c);

练习:输入一个字符串,统计字母出现的次数

int indexOf(int ch) 从左往右找第一个出现int字符的索引位置,如果找不到返回-1

int indexOf(int ch, int fromIndex) 从fromIndex位置往右开始查找,第一个出现int字符的索引位置,

如果找不到返回-1

int indexOf(String str)从左往右找第一个出现str的索引位置,如果找不到返回-1

int lastIndexOf(int ch) 从右往左找第一个出现int字符的索引位置,如果找不到返回-1

int lastIndexOf(String str) 从右往左找第一个出现str的索引位置,如果找不到返回-1

检查邮箱格式是否包含@

查找路径中最后一个分隔符的索引位置(D:\AF2205\Java\第三周测试\王盟\abc.txt)

String substring(int beginIndex) //从beginIndex开始到结束截取子串

String substring(int beginIndex, int endIndex) [beginIndex,endIndex)之间的子串//从一个路径中获取文件名 

public String getFilename(String path) { 

//找最后一个\\的位置 

int index=path.lastIndexOf('\\'); 

int end=path.length(); 

String fileName=path.substring(index+1,end); 

return fileName; 

// return path.substring(path.lastIndexOf('\\')); 

}

Test5 t=new Test5(); 

String name=t.getFilename(path); 

System.out.println(name);

boolean startsWith(String prefix) 判断字符串是否以prifix开头

boolean endsWith(String suffix) 判断字符串是否以suffix结尾

//http://www.baidu.com 判断是否是http开头 

String url="http://www.baidu.com"; 

System.out.println(url.startsWith("https")); 

//boolean endsWith(String suffix) 判断字符串是否以suffix结尾 

String path="D:\\AF2205\\Java\\第三周测试\\王盟\\abc.txt"; 

System.out.println(path.endsWith("png"));
字符串的连接

String concat(String str) 将指定字符串连接到此字符串的结尾。

// + 

String s="a"; 

String s2=s+"b";//ab 

int num=12; 

System.out.println("这个数:"+num); 
//整数转换字符串 

String numStr=num+""; 

//concat 

String str="abc"; 

String str2=str.concat("...."); 

System.out.println(str2);
String[] split(String regex) 拆分字符串

String str="长亭外,古道边,芳草碧连天"; 

String[] arr=str.split(","); 

for (String string : arr) { 

System.out.println(string); 

}

练习:转换日期的格式 :2022-06-21 —>2022年06月21日

String trim() //去除一个字符串前面和后面的空格
   
String str2=" 2354 64 "; 

System.out.println(str2.length()); 

str2=str2.trim(); 

System.out.println(str2.length());//7,中间的空格无法去除

String valueOf(xxx) 把其它类型的数据转换成String类型

Math

Math 执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

static double abs(double a) 求绝对值

static double ceil(double a)  //比a大的最小整数---向上取整 
static double floor(double a) //比a小的最大整数--向下取整
static int round(float a) //四舍五入
static double random()  [0.0,1.0)

static double pow(double a, double b) //返回第一个参数的第二个参数次幂的值。 
static double sqrt(double a) //返回正确舍入的 double 值的正平方根 

Random

​ int nextInt(int n) [0,n)之间的整数

Arrays 数组的工具类

	static void sort(int[] a) 
	static String toString(int[])// 把数组转换成字符串输出
	static String deepToString(Object[] a) 
	static int binarySearch(int[] a, int key) //  二分查找,
 	static int[] copyOf(int[] original, int newLength)// 扩容/缩容
 	static boolean equals(int[] a, int[] a2)  
 	static void fill(int[] a, int val)//将指定的 int 值分配给指定 int 型数组的每个元素。

包:相当于文件夹

1、分类管理java文件
2、避免java文件的重名
3、保护资源。主要访问控制权限 public private default	

包的创建
1、new package
2、创建类的时候,添加包名
包名:
1、公司域名的倒写[+部门名称]+项目名称+模块名
www.hipeak.com
com.hipeak.phone.newstitle.weititle
com.hipeak.af.stusys.model
com.hipeak.af.stusys.dao
com.hipeak.af.stusys.view
2、.只有分隔的作用,就不要以.开头或结束
包的声明
package com.hipeak.af.stusys.model;
必须位于类中第一行非注释性语句
导入包
使用别的包中的类,就需要导入。java.lang包除外
导入的语法import 包名.类名; —包名.类名唯一确定类的位置 类的完全限定名
import 包名.*;
快捷键:Ctrl+Shift+O

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值