目录
(1)java.lang.Math类提供了一些基本数学运算和几何运算的方法。
(2)此类中的所有方法都是静态的。这个类是final类,因此没有子类。
-->static double abs(double a):返回double值的绝对值。例如,Math.abs(-3.5)返回3.5。
-->static double max(double a,double b):返回两个double值中较大的一个。例如,Math.max(2.5,90.5);返回90.5。
-->static double random():返回一个随机的double值,该值大于等于0.0且小于1.0。
(4)随机获取一个[num1,num2)之间的整数(num2>num1)公式: int num = (int)(Math.random()*(num2-num1)+num1);
(1)在Java中,字符串被作为String类型的对象来处理。
(2)String类位于java.lang包中,默认情况下,该包被自动导入所有的程序。
String s = new String("Hello World");
(4)String类提供了许多有用的方法来操作字符串,比如获取字符串长度、对两个字符串进行比较、连接两个字符串以及提取一个字符串中的某一部分。
(5)字符串是一个字符序列,每一个字符都有自己的位置,字符串事实上也是一个字符数组,因此它的索引位置从0开始到(字符串长度-1)结束。
(3)忽略带小写的字符串比较:equalsIgnoreCase(字符串2)
(4)转换字符串中的英文字符为小写:toLowerCase()
(5)转换字符串中的英文字符为大写:toUpperCase()
(8)字符串拆分:split(separator,limit)
-->separator是可选项,表示根据匹配指定的正则表达式来拆分此字符串。如果匹配不上,则结果数组只有一个元素,即此字符串。
(1)StringBuffer类也是Java提供的用于处理字符串的一个类,而且它是比String类更高效的存储字符串的一种引用数据类型。
(2)StringBuffer类对字符串进行连接操作时,使用StringBuffer类可以大大提高程序的执行效率。
StringBuffer类位于java.util包中,是String类的增强类。StringBuffer类提供了很多方法可供使用。
StringBuffer 对象名 = new StringBuffer("字符串内容");
1)toString()方法:将StringBuffer类型的字符串转换为String类型的对象。
2)append(参数)方法:将参数连接到字符串后,可以将任何类型的值追加到字符串后。
3)insert(位置,参数)方法:将参数插入到字符串指定位置后并返回。参数值可以是包括String的任何类型。
(1)java.lang.StringBuilder是JDK 5.0版本新增的类,它是一个可变的字符序列。
(2)此类提供一个与StringBuffer类兼容的API,被设计用作StringBuffer类的一个简易替换,在大多数实现中,它比StringBuffer执行要快。
(3)使用StringBuilder类处理字符串的方法与StringBuffer类基本一样。
4、4 String类、StringBuffer类及StringBuilder类对比
String、StringBuffer、StringBuilder这3个类在处理字符串时有各自的特点和实用场合,具体如下:
(1)从Java SE 5.0开始,Java程序设计语言引入了一种新的类型——枚举(Enum)。
(2)枚举是指由一组固定的常量组成的类型。使用关键字enum定义。
(3)定义枚举语法格式如下:
[Modifer] enum enumName{
enumContantName[,enumContantName2...[;]]
//[field,method]
}
-->Modifer是访问修饰符,如public等。
-->enum是关键字。
-->enumContantName[,enumContantName2...[;]]表示枚举常量列表,枚举常量之间以逗号隔开。
-->//[field,method]表示其他的成员,包括构造方法,置于枚举常量的后面。
-->在枚举中,如果除了定义枚举常量,还定义了其他成员,则枚举常量列表必须以分号(;)结尾。
(4)枚举其实就是一种类型,是java.lang.Enum类的子类,继承了Enum类的许多有用的方法。
(1)Java语言是面向对象的,但是Java中的基本数据类型却不是面向对象的,这在实际开发中存在很多的不便。为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类,称为包装类。
(2)包装类均为java.lang包中,包装类和基本数据类型的对应关系如下表所示。
(3)包装类的用途主要有两个:
-->包装类作为和基本数据类型对应的类存在,方便对象的操作。
-->包装类包含每种基本数据类型的相关属性,如最大值、最小值等,以及相关的操作方法。
(1)基本数据类型转换为包装类
在Java中,基于基本数据类型数据创建包装类对象通常可以采用如下两种方式。
1)使用包装类的构造方法
-->public Type(type value)。
-->public Type(String value)。
其中,Type表示包装类,参数type为基本数据类型。
- /* 所有包装类都可将与之对应的基本数据类型作为参数
- ,来构造它们的实例*/
- byte num1 = 10;
- Byte byte1 = new Byte(num1);//------------------->首字母大写
- System.out.println(byte1);
-
- short num2 = 100;
- Short short1 = new Short(num2);
-
- int num3 = 200;
- Integer int1 = new Integer(num3);
-
- long num4=300;
- Long Long=new Long(num4);
-
- double num5=12.4;
- Double double1=new Double(num5);
-
- char num6 = '我';
- Character cha=new Character(num6);
-
- Integer int2=new Integer("123");
- System.out.println(int2);
-
- Short short2 =new Short("122");
- System.out.println(short2);
-
- Byte byte2 = new Byte("11");
- System.out.println(byte2);
-
- Long long2 = new Long("456");
- System.out.println(long2);
不能使用第二种构造方法创建Character类的包装类对象,只能是Character charValue = new Character('x')这种形式。
2)使用包装类的valueOf()方法
a)包装类中一般包含静态的重载的valueOf()方法,它可以接收基本数据类型数据和字符串作为参数并返回包装类的对象。
b)以Integer包装类为例,valueOf()方法的定义如下表所示
c)Character类的valueOf()方法只有一个版本的定义,即valueOf(char c),它返回一个表示指定char值的Character对象。
(2)包装类转换成基本数据类型
包装类转换成基本数据类型通常采用如下的方法:public type typeValue();
其中,type指的是基本数据类型,如byteValue()、charValue()等,相应的返回值为byte、char。
- // 包装类常用方法
- //XXXValue():包装类转换成基本类型
-
- Integer int1=new Integer("100");
- System.out.println(int1);
- System.out.println("***********");
-
- int num1=int1.intValue();
- System.out.println(num1);
-
- Double double1 =new Double("10.0");
- double num2=double1.doubleValue();
- System.out.println(num2);
(3)基本类型和包装类的自动转换
1)在Java SE 5.0版本之后程序员不需要编码实现基本数据类型和包装类之间的转换,编译器会自动完成。
Integer intObject = 5; //装箱:基本数据类型转换为包装类
int intValue = intObject; //拆箱:包装类转换为基本数据类型
- package deno02;
-
- public class demo04 {
-
- public static void main(String[] args) {
- // 包装类和基本数据的自动转换
- //装箱----------基本----->包装类
- int num1=10; //基本
- Integer int1 =num1; //包装类
- //拆箱----------->包装类--->基本
- Character char1=new Character('a');
- char num2=char1;
-
- Integer int2= new Integer(10);
- int num3=10;
- //运算-----------》直接进行数学运算
- Integer int3 = new Integer(300);
- int num5 = 300;
- Integer int4 =int3+num5; //--------->类的add
- int sum =int3+num5; //---------->
- }
- }
2)虽然Java平台提供了基本数据类型和包装类的自动转换功能。程序员在程序中也不能只使用对象,而抛弃了基本数据类型。
3)包装对象只有在基本数据类型需要用对象表示时才使用,包装类并不是用来取代基本数据类型的。
//求一个数的绝对值,正数的绝对值是它本身,负数的绝对值是其相反数
System.out.println(Math.abs(100));
System.out.println(Math.abs(-100));
//求最大值和最小值
System.out.println(Math.max(25, 18));
System.out.println(Math.min(99, 33));
- package deno04;
-
- import java.util.Random;
-
- public class RandomDemo01 {
-
- public static void main(String[] args) {
- //创建Random类对象
- Random random = new Random();//------------导包
-
- //获取随机数
- // int int1=random.nextInt();
- // System.out.println(int1);
-
- int int2=random.nextInt(10);//-------------->int在10 以内的随机数
- System.out.println(int2);
- System.out.println("***");
- long long1=random.nextLong();
- System.out.println(long1);
- //求随机数
- //Math.random():返回一个[0.0,1.0)之间的double类型数据
- double random1 = Math.random();
- System.out.println(random1);
- //Math.random()*10:返回一个[0.0,10.0)之间的double类型的数据
- double random2 = Math.random()*10;
- System.out.println(random2);
- //(int)(Math.random()*10):返回一个[0,10)之间的int类型的数据
- int random3 = (int)(Math.random()*10);
- System.out.println(random3);
- //(int)(Math.random()*(num2-num1)+num1):返回一个[num1,num2)(num2>num1)之间的int类型的数据
- //随机获取一个[63,81)之间的int类型的数据
- int random4 =(int)(Math.random()*(81-63)+63);
- System.out.println(random4);