方法使用六大要素
1.谁的方法(哪个类)
2.什么方法(静态还是成员)
3.功能是什么(能做什么)
4.需要传入什么参数
5.返回什么参数
6方法名
1.String
java.lang.String 是字符串类
他的底层就是一个字符数组,所以它的很多特性就是数组的特性
1.字符串一旦创建,这个字符串对象不能更改
2.字符串需要使用“” 双引号表示
3.为了提高字符串访问效率,提出缓存机制,字符串常量池
String s1="Hello";
String s2="Hellow";
String s3=new String "Hello";
//s1==s2 都在常量池 是一个内存地址
//s1==s3 不相等 一个在常量池 一个在堆内存
1.1构造方法
1.常量池
String s1=“abc”;
2.堆内存
String s2=new String(“xxx”);
3.字节数组 字节转字符串 ASCII码
byte[] bytes={97,98,99,100};
String s3=new String(bytes);
System.out.println(s3);//abcd
4 截取字符数组的一部分 开始(包含)
String s4=new String(byte,2,2);//从下标3开始(),取两个
System.out.println(s4);
5 字符数组
char[] chars={‘a’,‘b’,‘c’};
String s5=new String(chars);
System.out.println(s5);//abc
6 截取字符数组的一部分 开始包含
String s6 =new String(char,1,2);
System.out.println(s6);//bc
1.2常用方法
int length():返回字符串的长度: return value.length
char charAt(int index): 返回某索引处的字符return value[index]
boolean isEmpty():判断是否是空字符串:return value.length == 0
String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写
String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写
String trim():返回字符串的副本,忽略前导空白和尾部空白
boolean equals(Object obj):比较字符串的内容是否相同
boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写
String concat(String str):将指定字符串连接到此字符串的结尾。 等价于用“+”
int compareTo(String anotherString):比较两个字符串的大小
String substring(int beginIndex): 返回一个新的字符串, 它是此字符串的从beginIndex开始截取到最后的一个子字符串。
String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字 符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的
子字符串是否以指定前缀开始boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列 时,返回 true
int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出 现处的索引,从指定的索引开始
int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后 一次出现处的索引,从指定的索引开始反向搜索
注:indexOf和lastIndexOf方法如果未找到都是返回-1
String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
String replace(CharSequence target, CharSequence replacement): 使 用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
String replaceAll(String regex, String replacement) : 使用给定的replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
String replaceFirst(String regex, String replacement) : 使用给定的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此 字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中
1.3StringBuffer和StringBuilder
1 StringBuffer和StringBuilder是什么?
是一个可变的字符串缓冲区,适合做拼接操作
底层也是char数组,只不过默认长度是16,而字符串内容多少长度就是多少
2原理
先定义好长度,以容纳更多字符
如果预留的空间长度不够,会进行自动扩容
默认长度为16,扩大容量为(当前容量+1)*2,16 ->34 ->703
3.StringBuffer和StringBuilder区别
StringBuilder:非线程安全,在多线程环境下使用,可能出现问题,所以常用于方法中
StringBuffer:线程安全,在多线程环境下使用,不会出现问题,所以常用于类中
1.3.1使用
String Builder sb= new String Builder();
sb.append(“a”);尾部添加数据
sb.append(“c”).append(“d”); 可以使用链式调用,return this
sb.reverse();反转
sb.insert(1,“2”);指定位置添加数据
sb.length();已有元素个数
sb.capacity();当前数组的位置
String s=sb.toString();将sb转换为String类型
2.包装类
2.1 概述
封装了基本数据类型的一些操作,更加方便使用
java中有8种基本数据类型
byte-----> java.lang.Byte
short -----> java.lang.Short
int -----> java.lang.Integer
long -----> java.lang.Long
float -----> java.lang.Float
double -----> java.lang.Double
boolean -----> java.lang.Boolean
char -----> java.lang.Character
3. Interger
3.1基本使用
1.获取最大值和最小值
Integer.MAX_VALUE
Integer.MIN_VALUE
Long.MAX_VALUE …
3.2 常用方法
2. int --> Integer 创建Integer类型的对象,把基本类型转换为引用类型
Integer i1 = new Integer(10);
Integer i1_1 = Integer.valueOf(22);
3.纯数字的字符串转换为Integer类型,必须是纯数字
Integer i2 = new Integer(“12”);
4.Integer --> int, intValue 返回其int值
int i2 = i1.intValue();
☆5.static int parseInt(String s) : 把纯数字的字符串转换为int类型
int i3 = Integer.parseInt(“234”);
double d1 = Double.parseDouble(“2.5”);
6.二进制、八进制、十六进制展示
String s1 = Integer.toBinaryString(10);
String s2 = Integer.toOctalString(10);
String s3 = Integer.toHexString(10);
3.3类型转换
7.int Integer String 三种之间的转换
1 int --> Integer
Integer i1 = Integer.valueOf(19);
2 Integer --> int
int i2 = i1.intValue();
3 String --> Integer
Integer i3 = Integer.valueOf(“22”);
4 Integer --> String
String i4 = i3.toString();
5 int --> String
String i5 = i2 + “”;
6 String --> int
int i6 = Integer.parseInt(i5);
3.4 装箱和拆箱
自动装箱 : 把 基本类型 自动转换为对应的封装类类型 就是自动装箱
自动拆箱 : 把 包装类类型 自动转换为对应的基本类型 就是自动拆箱
装箱和拆箱是在编译阶段完成的
Integer i3 = 22;// 编译后 自动转换为 Integer.valueOf(22);
int i4 = i3; // 编译后 自动转换为 i3.intValue();
// 先进行自动装箱为Integer类型,然后向上转型发生多态 为 Object 类型
// 编译后转换为 m1(Integer.valueOf(3123));
m1(3123);
public static void m1(Object obj){
System.out.println(obj);
}
3.5 整型常量池
整型常量池 : 其实就是一个Integer数组 , 提前创建好256个Integer对象,放到数组中
范围是 -128~127
当我们在进行valueOf() 的时候,先判断这个值是否在 -128~127之间,如果在 直接返回数组对应的Integer对象,不需要再次创建。如果不在就会new。
Integer i3 = 127;
Integer i4 = 127;
// true
System.out.println(i3 == i4);
Integer i1 = 128;
Integer i2 = 128;
// false
System.out.println(i1 == i2);
4. System
System类提供的public static long currentTimeMillis()
用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
此方法适于计算时间差。 中国是:1970.1.1 8:00:00
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。 该类位于java.lang包。
由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实 例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便 的进行调用。
成员变量:System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
成员方法:
native long currentTimeMillis():
该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时
间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
void exit(int status):
该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表
异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。
// 计算时间差
// currentTimeMillis : 获取当前系统时间对应的毫秒数
long startTime = System.currentTimeMillis();
System.out.println("正在执行");
long endTime = System.currentTimeMillis();
System.out.println("耗时 : "+(endTime-startTime));
// 退出程序,0 表示正常退出
// 一般用于图形界面 关闭窗口
System.exit(0);
// 执行不到
System.out.println(222);
5.Date
时间类, 1970.1.1 8:00:00
5.1 构造方法
// 无参 获取当前系统时间
Date d1 = new Date();
// 传入的是毫秒数,时间原点到指定毫秒数的时间
Date d2 = new Date(1000);
// Tue Jul 13 15:40:50 CST 2021
System.out.println(d1);
// Thu Jan 01 08:00:01 CST 1970
System.out.println(d2);
5.2 时间格式化
1 new SimpleDateFormat(时间格式) : 创建格式化对象并指定格式
2 public String format(Date date) : 把指定时间按照固定格式进行转换,并返回该时间格式的字符串
3 public Date parse(String strTime) : 把时间格式的字符串,按照对应的格式转换为 Date对象
年 y 月 M 日 d 时 H 分 m 秒 s 毫秒 S
// 创建时间格式化对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");
// 格式化当前时间
String strTime = sdf.format(d1);
System.out.println(strTime);// 2021年07月13日 15:46:01 324
strTime = "2021年07月13日 15:46:01 324";
Date d2 = sdf.parse(strTime);
System.out.println(d2);// Tue Jul 13 15:46:01 CST 2021
5.3 日历
// 创建日历
Calendar c = Calendar.getInstance();
// 获取年
int year = c.get(Calendar.YEAR);
// 获取月 , 0 表示1月,以此类推
int month = c.get(Calendar.MONTH)+1;
// 获取日
int day = c.get(Calendar.DAY_OF_MONTH);
// 获取时 , HOUR_OF_DAY 24小时 HOUR 12小时
int hour = c.get(Calendar.HOUR_OF_DAY);
// 获取分
int minute = c.get(Calendar.MINUTE);
// 获取秒
int second = c.get(Calendar.SECOND);
// 获取星期 , 第一天是周日
int weekday = c.get(Calendar.DAY_OF_WEEK);
6 Random
1.1 使用
随机数 从0开始
Random random = new Random();
int i = random.nextlnt(5);
System.out.println(i);
//生成10~20
//nextlnt(最大值-最小值+1)+最小值
int x =random.nextlnt(11)+10;
System.out.println(x);
7 Number
7.1 DecimalFormat 数字格式化
//加入千分位,保留两位小数 遵循四舍五入
df=new DecimalFormat(",###.##");
//保留两位小数,不够的补0
df=new DecimalFormat(",###.0000");
7.2 BigInteger&BigDecimal
java.lang.Math提供了一系列静态方法用于科学计算。其方法的参数和返回
值类型一般为double型。
abs 绝对值, acos,asin,atan,cos,sin,tan 三角函数, sqrt 平方根
pow(double a,doble b) a的b次幂, log 自然对数
exp e为底指数
max(double a,double b)
min(double a,double b)
random() 返回0.0到1.0的随机数
long round(double a) double型数据a转换为long型(四舍五入)
toDegrees(double angrad) 弧度—>角度
toRadians(double angdeg) 角度—>弧度
1 BigInteger
1、Integer类作为int的包装类,能存储的最大整型值为231-1,Long类也是有限的, 最大为263-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类 都无能为力,更不用说进行运算了。
2、java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger 提供
所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。 另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、 位操作以及一些其他操作。
3、构造器
BigInteger(String val):根据字符串构建BigInteger对象
4、常用方法
public BigInteger abs():返回此 BigInteger 的绝对值的 BigInteger。
BigInteger add(BigInteger val) :返回其值为 (this + val) 的 BigInteger
BigInteger subtract(BigInteger val) :返回其值为 (this - val) 的 BigInteger
BigInteger multiply(BigInteger val) :返回其值为 (this * val) 的 BigInteger
BigInteger divide(BigInteger val) :返回其值为 (this / val) 的 BigInteger。整数 相除只保留整数部分。
BigInteger remainder(BigInteger val) :返回其值为 (this % val) 的 BigInteger。
BigInteger[] divideAndRemainder(BigInteger val):返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组。
BigInteger pow(int exponent) :返回其值为 (thisexponent) 的 BigInteger。
2 BigDecimal
一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中, 要求数字精度比较高,故用到java.math.BigDecimal类。
BigDecimal类支持不可变的、任意精度的有符号十进制定点数。
构造器
public BigDecimal(double val)
public BigDecimal(String val)
常用方法
public BigDecimal add(BigDecimal augend)public BigDecimal subtract(BigDecimal subtrahend)
public BigDecimal multiply(BigDecimal multiplicand)
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
7.3 使用
1 引用类型 加减乘除 需要使用方法调用
BigDecimal v1 = new BigDecimal(20);
BigDecimal v2 = new BigDecimal(20);
// + 不能 v1+v2 不行,因为是应用类型
BigDecimal v3 = v1.add(v2);
// -
v3 = v1.subtract(v2);
// *
v3 = v1.multiply(v2);
// /
v3 = v1.divide(v2);
// %
v3 = v1.remainder(v2);
2.阶乘 传统阶乘long类型值有限
public static BigDecimal m2(int n) {
if (n <= 1) {
return new BigDecimal(1);
}
return new BigDecimal(n).multiply(m2(n - 1));
}
8.Math
1.概述
Math 提供科学计算和基本的数学操作方法
全部都是静态方法,类名调用,并且Math在java.lang下 不需要导包
// abs 绝对值
System.out.println(Math.abs(-23));
// ceil 向上取整,小数大于0 就 + 进位
System.out.println(Math.ceil(1.0000001));
// floor 向下取整 , 舍弃小数
System.out.println(Math.floor(1.99999));
// sqrt 平方根
System.out.println(Math.sqrt(4));
// cbrt 立方根
System.out.println(Math.cbrt(4));
// random 随机数 生成大于等于0.0 且小于 1.0
System.out.println(Math.random());
// rint 四舍五入
// 银行算法 , 四舍六入五取双 取偶数
System.out.println(Math.rint(2.5));
System.out.println(Math.rint(3.5));
// pow N次方
System.out.println(Math.pow(2, 3));