基本类型包装类
- 基本数据类型不是面向过程的,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类。
- 包装类(
Integer
、Double
) 封装了基本的数据类型的值,并提供了一系列的操作方法。
常用操作: 常用的操作之一:用于基本数据类型与字符串之间的转换。
基本类型和包装类的对应
byte——Byte
short——Short
int ——Integer
long——Long
float——Float
double——Double
char——Character
boolean——Boolean
需求:
a:将100转换成二进制 , 八进制 , 十六进制
b:判断一个数是否在int的范围内
package org.westos.demo;public class MyTest {
public static void main(String[] args) {
/* 需求:a:将100转换成二进制, 八进制, 十六进制b:判断一个数是否在int的范围内*/int num=100;//Integer integer = new Integer(num);/* static String toBinaryString ( int i)以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。static String toHexString ( int i)以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。static String toOctalString ( int i)以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。*/String s = Integer.toBinaryString(num);String s1 = Integer.toHexString(num);String s2 = Integer.toOctalString(num);System.out.println(s);System.out.println(s1);System.out.println(s2);/* static int MAX_VALUE值为 231-1 的常量,它表示 int 类型能够表示的最大值。static int MIN_VALUE值为 -231 的常量,它表示 int 类型能够表示的最小值。 */if(Integer.MIN_VALUE<=55555&&55555<=Integer.MAX_VALUE){
System.out.println("在Int类型的范围内");}}
}
3、Integer类的概述和构造方法
Integer类概述
通过JDK提供的API,查看Integer类的说明
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rjd6MlI7-1639270710256)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
Integer 类在对象中包装了一个基本类型 int 的值,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法
构造方法
public Integer(int value)
public Integer(String s) //要个一个字面上是数字的字符串,如果不是就会报错
package org.westos.demo;public class MyTest2 {
public static void main(String[] args) {
/* Integer( int value)构造一个新分配的 Integer 对象,它表示指定的 int 值。Integer(String s)构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。*/int num = 100;Integer integer = new Integer(num);//Integer 类重写了父类的toString()方法,把他包装的值,转换成了字符串。String s = integer.toString();System.out.println(s);//构造方法要的是 字面上是一个有效数字的字符串 不然就会报 NumberFormatException 异常Integer integer1 = new Integer("100");}
}
4、String和int类型的相互转换
int ——String
a:和""进行拼接
b:public static String valueOf(int i)
c:int – Integer – String
d:public static String toString(int i)
String——int
a:String – Integer – intValue();
b:public static int parseInt(String s)
package org.westos.demo;public class MyTest3 {
public static void main(String[] args) {
// int======String 100---------"100"int num=100; //"100"//方式1String s=num+"";//方式2String s1 = String.valueOf(num); //记这个//方式3String s2 = new Integer(num).toString();//String=======int "100"-----100String a="100";//方式1Integer integer = new Integer(a);int i = integer.intValue();System.out.println(i);//方式2:直接调用Integer类中的静态方法int i1 = Integer.parseInt(a); //经常用这个System.out.println(i1);}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dZtibF4O-1639270710258)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
5、自动装箱和拆箱
? 自动装箱:把基本类型转换为包装类类型
? 自动拆箱:把包装类类型转换为基本类型
注意事项
在使用时,Integer x = null;代码就会出现NullPointerException。
建议先判断是否为null,然后再使用。
package org.westos.demo;public class MyTest4 {
public static void main(String[] args) {
//JDK1.5之后提供的语法//自动拆箱:将包装类型自动转换成他所对应的基本类型。//自动装箱:将基本类型自动转换成他所对应的包装类型。int num=100;//Integer integer = new Integer(num);Integer a=num; // 自动装箱Integer b=20; // 自动装箱Integer x = new Integer(1);Integer y = new Integer(2);//自动拆箱int sum=x+y;System.out.println(sum);}
}
StringBuffer 与 StringBuilder
由于String是不可变的.我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间 所有就出现了StringBuffer。
概述
- StringBuffer类 : 线程安全的可变字符序列
StringBuffer的构造方法
public StringBuffer(): 无参构造方法
public StringBuffer(int capacity): 指定容量的字符串缓冲区对象
public StringBuffer(String str): 指定字符串内容的字符串缓冲区对象
StringBuffer的方法
public int capacity():返回当前容量。
理论值
public int length():返回长度(字符数)。
实际值
public class MyTest {
public static void main(String[] args) {
// StringBuffer 就是一长度可变的字符容器,如果你有拼串的需求,可以采用字符容器来拼串。//StringBuffer()//构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。StringBuffer sbf = new StringBuffer();int c1 = sbf.capacity();System.out.println(c1);//16sbf.append("aaa");System.out.println(sbf.capacity());//获取容器的容量;16System.out.println(sbf.length());//获取容器中字符的长度;3//StringBuffer( int capacity)//构造一个不带字符,但具有指定初始容量的字符串缓冲区。StringBuffer sbf1 = new StringBuffer(100);int c2 = sbf1.capacity();System.out.println(c2);//100// StringBuffer(String str)// 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。StringBuffer sbf2 = new StringBuffer("aaaaaa");int c3 = sbf2.capacity();System.out.println(c3);//22}
}
StringBuffer的添加功能
public StringBuffer **append**(String str):
可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
public class MyTest1 {
public static void main(String[] args) {
StringBuffer sbf = new StringBuffer();sbf.append("hahaha");//往容器中追加内容,返回的还是原来的容器对象。所以我就链式编程,不断的往容器中追加内容。sbf.append(11).append('a').append(3.14).append("哈哈").append(new char[]{
'a','s','d'});//StringBuffer类重写了父类的toSting方法,把容器中的的数据转换成字符串返回。System.out.println(sbf.toString());}
}// 输出结果:
//hahaha11a3.14哈哈asd
public StringBuffer **insert**(int offset,String str): 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
public class MyTest2 {
public static void main(String[] args) {
StringBuffer sbf = new StringBuffer("aaabbbccc");sbf.insert(3,"我");//根据指定的索引位置进行添加,返回的还是原来的那个容器,所以可以链式编程,不断的添加sbf.insert(7,"爱").insert(11,"吃");System.out.println(sbf);}
}
StringBuffer类的删除功能
public StringBuffer deleteCharAt(int index): 删除指定位置的字符,并返回本身
public StringBuffer delete(int start,int end): 删除从指定位置开始指定位置结束的内容,并返回本身
public class Mytest3 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();sb.append("我好饿我要吃饭我好饿我要吃饭我好饿我要吃饭");//deleteCharAt(0) 根据索引,每次删除容器中的一个字符,返回的还是容器本身sb.deleteCharAt(0).deleteCharAt(0).deleteCharAt(0).deleteCharAt(0);//sb.delete(0, 4); 根据起始索引,和终止索引,删除容器中一段内容,返回的还是容器本身,索引,含头不含尾sb.delete(0, 4);System.out.println(sb.toString());}
}//好饿我要吃饭我好饿我要吃饭
StringBuffer的替换、反转和查找功能
StringBuffer的替换功能 public StringBuffer replace(int start,int end,String str): 从start开始到end用str替换
StringBuffer的反转功能 public StringBuffer reverse(): 字符串反转
`从头查找该字符串,在容器中第一次出现的索引,如果找不到就返回-1
int indexOf (String str)
从指定索引处开始查找该字符串,第一次出现的索引,如果找不到就返回-1
int indexOf (String str,int fromIndex)
从后往前找 int lastIndexOf (String str) int lastIndexOf (String str,int fromIndex)
public class MyTest4 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();sb.append("我好饿我要吃饭我好饿我要吃饭我好饿我要吃饭");sb.replace(0,6,"我好困我要睡觉");System.out.println(sb);sb.reverse();System.out.println(sb);sb.reverse();int a = sb.indexOf("睡觉");System.out.println(a);int b = sb.indexOf("吃饭", 6);System.out.println(b);int c = sb.lastIndexOf("睡觉");System.out.println(c);}
}
//我好困我要睡觉饭我好饿我要吃饭我好饿我要吃饭
//饭吃要我饿好我饭吃要我饿好我饭觉睡要我困好我
//5
//13
//5
StringBuffer的截取功能
public String substring(int start):
从指定位置截取到末尾 public String substring(int start,int end):
- 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
public class MyTest5 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();sb.append("我好饿我要吃饭");//根据起始索引和终止索引,截取容器中的一段内容,以字符串形式返回,索引含头不含尾。String s = sb.substring(1, 3);System.out.println(s);//好饿}
}
- 注意 : 返回值的类型已经不是StringBuffer本身
String类StringBuffer类StringBuilder区别
● String:是字符常量,适用于少量的字符串操作的情况
● StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
● StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
Math类
- java.lang.Math 提供了静态方法用于科学计算,其方法的参数和返回值类型一般为double类型
- abs 取绝对值
- sqrt 平方根
- pow(double a, double b) a的b次幂
- max(double a, double b)
- min(double a, double b)
- random() 返回 0.0 到 1.0 的随机数
- long round(double a) double型的数据a转换为long型(四舍五入)
Random类
- Random类概述
此类用于产生随机数 - 构造方法
public Random()
- 成员方法
public int nextInt() public int nextInt(int n)
import java.util.Random;public class TestRandom {
public static void main(String[] args) {
Random a = new Random();int x = a.nextInt(); // 给x 赋值随机数int y = a.nextInt(10); // 给y 赋值0 - 10 的随机数System.out.println(x);System.out.println(y);}
}