java十一章总结

11.1包装类

表11.1 包装类及其对应的基本数据类型

11.1.1 Integer 类

Integer 类在对象中包装了一个基本数据类型 int 的值,该类的对象包含了一个 int 类型的字节。

例题:

package elevenbao;
public class 例题1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int num = Integer.parseInt("456");
		Integer iNum = Integer.valueOf("456");
		System.out.println("int数据与Integer对象的比较:" + iNum.equals(num));
		String str2 = Integer.toBinaryString(num);
		String str3 = Integer.toHexString(num);
		String str4 = Integer.toOctalString(num);
		String str5 = Integer.toString(num,15);
		System.out.println("456的二进制表示为:" + str2);
		System.out.println("456的十六进制表示为:" + str3);
		System.out.println("456的八进制表示为:" + str4);
		System.out.println("456的十五进制表示为:" + str5);
	}
}

 

 

MAX_VALUE: 表示 int 类型可取的最大值,即2的31次方减一。

MIN_VALUE:表示  int 类型可取的最小值,即-2的31次方。

SIZE:用来以二进制补码的形式表示 int 值的位数

TYPE:表示基本类型 int 的Cless 实例。

例题11.2:
 

package elevenbao;
public class 例题2 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int maxint = Integer.MAX_VALUE;
		int minint = Integer.MIN_VALUE;
		int intsize = Integer.SIZE;
		System.out.println("int类型可取的最大值是:" + maxint);
		System.out.println("int类型可取的最小值是:" + minint);
		System.out.println("int类型的二进制数是:" + intsize);
	}
}

结果:

11.1.2 Double类
Double 类在对象中包装一个基本数据类型为 double 的值,每个 Double 类的对象都包含一个 double 类型的字段。此外,该类还提供了多个方法,可以将 double 类型转换为 String 类型,将 String 类型转化为 double 类型。

例题11.3:
 

package elevenbao;
public class 例题3 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Double dNum = Double.valueOf("3.14");
		System.out.println("3.14是否为非数字值:" + Double.isNaN(dNum.doubleValue()));
		System.out.println("3.14转换为int值为:" + dNum.intValue());
		System.out.println("值为3.14的Double对象与3.14的比较结果:" + dNum.equals(3.14));
 
	}
}

 结果:

11.1.3 Boolean类

 Boolean类将基本类型为boolean的值包装在一个对象中。一个Boolean 类型的对象只包含一个类型为boolean的字段。此外,此类还为boolean类型和String 类型的相互转换提供了许多方法,并提供了处理boolean 类型时非常有用的其他一些常量和方法。Boolean类的常用方法如表11.4 所示。

例题11.4:

 
public class BooleanDemo {
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Boolean b1 =Boolean.valueOf("true"); //创建Boolean对象
  Boolean b2 =Boolean.valueOf("ok");
  System.out.println("b1:"+b1.booleanValue());
  System.out.println("b2:"+b2.booleanValue());
 }
 
}
//例11.4

 运行结果:

11.1.4 Character 类

该提供了多种方法,以确定字符的类别(小写字母、数字等),并可以很方便地将字符从大写转化为小写,反之亦然。Character 类的常用方法:

 

 例题:

 
public class UpperOrLower {
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Character mychar1=Character.valueOf('A');
  Character mychar2=Character.valueOf('a');
  if(Character.isUpperCase(mychar1)) {
   System.out.println(mychar1+"是大写字母");
   //转换为小写字母输出
   System.out.println("转换为小写字母的结果:"+Character.toLowerCase(mychar1));
  }
  if(Character.isLowerCase(mychar2)) {
   System.out.println(mychar1+"是小写字母");
   //转换为大写字母输出
   System.out.println("转换为小写字母的结果:"+Character.toUpperCase(mychar2));
  }
 }
}//例题11.5

结果:

 

Character类提供了大量表示特定字符的常量,例如:
☑CONNECTOR_PUNCTUATION:返回 byte 型值,表示 Unicode 规范中的常规类别“ Pc ”。
☑ UNASSIGNED:返回byte 型值,表示Unicode规范中的常规类别“Cn”。
☑TITLECASE_LETTER:返回 byte 型值,表示 Unicode 规范中的常规类别“ Lt ”。

说明:Character类提供的常量有很多,详细列表可查看Java API文档。  

 

11.1.5 Number类

数值包装类的共有方法:

 

11.2 数字处理
11.2.1 数字格式化
数字格式化操作主要针对的是浮点型数据,包括 double 型和 float 型数据。在 Java 中使用 java.textDecimalFormat 格式化数字。

DecimalFormat 类是 NumberFormat 的一个子类,用于格式化十进制数字。它可以将一些数字格式化为整数、浮点数、百分数等。通过使用该类可以为要输出的数字加上单位或控制数字的精度。

DecimalFormat 类中的特殊字符及其说明:

 

例题:

package elevenbao;
 
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
 
public class MathTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//11.2 数字处理
		//11.2.1 数字格式化
		DecimalFormat myFormat = new DecimalFormat();
		myFormat.applyPattern("###,###,###");
		String my = myFormat.format(7857478);
		System.out.println(my);
		
		DecimalFormat myFormat1 = new DecimalFormat();
		myFormat1.setGroupingSize(2);
		myFormat1.setGroupingUsed(true);
		String my1 = myFormat1.format(7857478);
		System.out.println(my1);
    }
}

 

 

11.2.2 Math 类

Math 类 提供了众多数学函数方法。主要包括三角函数方法,指数函数方法,取整函数方法,取最大值、最小值,以及平均值函数方法。这些方法都被定义为 static 形式,所以在程序中应用比较简便。

1.三角函数方法

package elevenbao;
 
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
 
public class MathTest {
	public static void main(String[] args) {
        //11.2.2 math类
		//三角函数
		System.out.println(Math.toRadians(45));
		double temp = Math.tan(Math.toRadians(45));
		System.out.println(temp);
		System.out.println(Math.tan(Math.toRadians(45)));
    }
}

2. 指数函数方法 

 

 

package elevenbao;
 
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
 
public class MathTest {
	public static void main(String[] args) {
		//指数函数Mat
		System.out.println(Math.cbrt(64));
		System.out.println(Math.pow(3, 5));
    }
}

 3. 取整函数方法

package elevenbao;
 
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
 
public class MathTest {
	public static void main(String[] args) {
		//取整函数
		System.out.println(Math.ceil(3.1));
		System.out.println(Math.floor(3.9));
		System.out.println(Math.rint(3.51));
		System.out.println(Math.rint(3.49));
		System.out.println(Math.rint(3.5));
		System.out.println(Math.rint(2.5));
    }
}

 

4. 取最大值、最小值、绝对值函数方法

11.2.3 Random 类
Random 类是 JDK  中的随机数生成器类,可以通过实例化一个 Random 对象创建一个随机数生成器,语法如下:

Random r = new Random();

也可以设置随机数生成器的种子。语法如下:

Random r = new Random(seedValue); 

 

package elevenbao;
 
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
import java.util.Random;
 
public class MathTest {
	public static void main(String[] args) {
		//11.2.3 Random类
		Random r = new Random();
		System.out.println(r.nextInt());
		System.out.println(r.nextInt(100));
		System.out.println(r.nextDouble());
    }
}

1.2.4 BigInteger 类
BigInteger 类的数字范围教 Integer 类的数字范围大的多。

在 BigInteger 类中封装了多种操作,除了基本的加、减、乘、除操作,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。

使用 BigInteger 类。可以实例化一个 BigInteger 对象,并自动调用相应的构造函数。BigInteger 类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。

例如,将 2 转换为BigInteger 类型,可以使用以下语句进行初始化操作:

BigInteger twolnstance = new BigInteger("2");

 

11.2.5 BigDecimal 类 

BigDecimal 类和 BigInteger 类都能实现大数字的运算,不同的是 BigDecimal 类加入了小数的概念。

BigDecimal 类中的常用构造方法:

BigDecimal类实现的加减乘除的方法如下:

 

  BigDecimal类中divide()方法有多种设置,用于但会商小数点后的末尾的处理,名称和含义如下:

例题:

import java.math.BigDecimal;
import java.math.RoundingMode;
 
public class BigDecimalDemo {
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
   //11.2.4 BigDecimal
    BigDecimal b1=new BigDecimal("0.728382834535");
    BigDecimal b2=new BigDecimal("0.00045353");
    System.out.println("两个数字相加结果:"+b1.add(b2));
   System.out.println("两个数字相减结果:"+b1.subtract(b2));
   System.out.println("两个数字相乘结果:"+b1.multiply(b2));
    //除法运算,商小数点后保留9位,并将结果进行四舍五入操作
    System.out.println("两个数字相除,保留小数点后9位:"+b1.divide(b2,9,RoundingMode.HALF_UP));
   
 }
 
}
//例题11.13

 

11.3 System 类

System 类是 JDK 中提供的系统类,该类是用 final 修饰的,所以不允许被继承。

System 类提供的常用方法:

11.3.1 控制台输出字符
1. 不会自动换行的 print() 方法

System.out.print("Hello");

2.可以自动换行的 println() 方法

System.out.println("Hello"); 

使用这俩个输出方法时还要注意一下两点:

(1)“System.out.println("\n");”  会打印两个空行。

(2) “System.out.print();”  无参数会报错。

11.3.2 计时
System.currentTimeMillis() 方法可以获取自1970年1月1日零点至今的毫秒数。

例题:

package elevenbao;
public class 例题14 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		long start = System.currentTimeMillis();
		String str = null;
		for(int i = 0;i < 10000;i++) {
			str += i;
		}
		long end = System.currentTimeMillis();
		System.out.println("循环用时:" + (end - start) + "毫秒");
	}
}

11.4 Scanner 类

使用Scanner 类首先要引入该类,其语法如下:

import.java.util.Scanner; 

 

使用 Scanner 类扫描控制台的代码如下:

Scanner sc = new Scanner(System.in);

 

import javax.print.attribute.standard.QueuedJobCount;
import javax.swing.*;
import java.util.Random;
import java.util.Scanner;
public class 猜数字 {
    public static void main(String[] args) {
        Random r = new Random();
        int number = r.nextInt(200) - 100;   //-100到100
        System.out.println(number);
        Scanner sc = new Scanner(System.in);
        int a = 0;
        while(true){
            System.out.println("请输入你要猜的数字");
            //int a = sc. nextInt();
            //占内存
            a = sc.nextInt();
            if(a > number){
                System.out.println("大了");
            }else if(a < number){
                System.out.println("小了");
            }else if(a == number){
                System.out.println("猜中了");
                break;
            }else {
                System.out.println("输入错误");
            }
        }
        System.out.println("恭喜你答对了");
        sc.close();
    }
}

 结果:

11.5 日期时间类

11.5.1 Date 类

 Date 类用于表示日期时间,使用该类表示时间需要使用其构造方法创建对象。

 

 例题:

package elevenbao;
 
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class DateTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//11.5 日期时间类
		Date d1 = new Date();
		System.out.println(d1);
		Date d2 = new Date(1664732264079L);
		System.out.println(d2);
		
		System.out.println(d1.after(d2));
		System.out.println(d1.before(d2));
		System.out.println(d1.getTime());
		d1.setTime(1985432264079L);
		System.out.println(d1.getTime());
		System.out.println();
    }
}

结果:

11.5.2日期时间格式化
DateFormat 类是日期时间格式化子类的抽象类,可以按照指定的格式对日期或时间进行格式化。DateFormat类提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期时间Formatter,格式化风格主要包括SHORT、MEDIUM、LONG和FULL4种:
SHORT:完全为数字,如12.13.52或3:30pm。
MEDIUM:较长,如Jan 12,1952。
LONG:更长,如January 12,1952或3:30:32pm。
FULL:完全指定,如Tuesday、April 12、1952AD或3:30:42pm PST。
  另外,使用DateFormat类还可以自定义日期时间的格式。要格式化一个当前语言环境下的日期,首先需要创建DateFormat类的一个对象,由于它是抽象类,因此可以使用其静态方法 getDateInstance()进行创建,语法如下:

DateFormat df =DateFormat.getDatelnstance();

 DateFormat 类的常用方法及其说明如下:

 

SimpleDateFormat类提供了19个格式化字符,如下:

一些常用的日期时间格式如下:

 

例题11.7

 

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class DateFormatDemo {
	public static void main(String[] args) {
		DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 EEEE HH时mm分ss秒");
		System.out.print("各位观众大家好,现在是");
		System.out.print(df.format(new Date()));
		System.out.println(",欢迎收看新闻。");
	}
 
}
//例题11.17

运行结果:

11.5.3Calendar类

Calendar 提供了一个类方法 getnstance(),以获得此类型的一个通用的对象。Calendar类的grtnstance()方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化,其使用方法如下:

Calendar rightNow =Calendar.getlnstance();

 说明:由于Calendar类是一个抽象类,不能用new创建实例对象,因此除了使用getInstance0方法创建其对象,如果需要创建其对象,必须使用其子类,如GregorianCalendar类。
Calendar类提供的常用字段及其说明如下:

Calendar类提供的常用方法及其说明如下:

 

例题11.8:

 

		import java.text.SimpleDateFormat;
		import java.util.Calendar;
		import java.util.Date;
 
		public class CountDown {
			public static void main(String[] args) {
				System.out.println("——————————共和国建立100周年倒计时——————————");
				Date date = new Date(); // 当前时间
				// 创建SimpleDateFormat对象,指定目标格式
				SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
				// 调用format方法,格式化时间,转换为指定方法
				String today = simpleDateFormat.format(date);
				System.out.println("今天是" + today); // 输出当前日期
				// 获取自1970年1月1日至当前时间所经过的毫秒数
				long time1 = date.getTime();
				// 使用默认时区和语言环境获得一个日历calendar
				Calendar calendar = Calendar.getInstance();
				// 设置日历calendar中的 年、月 和日的值。因为月份是从0开始计算的,所以这里要减一
				calendar.set(2049, 10 - 1, 1);
				// 计算自1970年1月1日至2049年10月1日所经过的毫秒数
				long time2 = calendar.getTimeInMillis();
				// 计算2049年10月1日距离当前时间相差的天数
				long day = (time2 - time1) / (1000 * 60 * 60 * 24);
				System.out.println("距离2049年10月1日还有 " + day + " 天!");
			}
		}
 
 
//例题11.18

运行结果:

最后对Calendar类的使用做出几点总结:
 c.set(Calendar.DAY_OF_MONTH,0)获取的是上个月的最后一天,所以调用前需要将月份往后
加一个月。
Calendar.MONTH的第一个月是使用()记录的,所以在获得月份数字后要加1。年和日是从
开始记录的,不需要加1。
Calendar.DAY OF_WEEK的第一天是周日,周一是第二天,周六是最后一天。

11.6Runtime类

Runtime类的常用方法如下:

11.6.1执行本地命令 

本地命令指的是操作系统的命令。例如,在Linux系统下就表示shell命令,在Windows系统下就表示cmd命令。
Rutime类提供exec()方法让Java代码可以执行系统的命令,exec)方法有很多重载的形式,例如:

Process exec(String command)
Process exec(String, cmdarray)

 command:要执行的系统命令,字符串类型。
cmdarray:要执行的命令和相应的命令参数,字符串数组类型。
其实这两个重载方式很类似,如执行“javac hellojava”这行命令,使用第一种重载方式的代码如下:

Runtime.getRuntime().exec("javac hello.java");

 

使用第二种重载方式的代码如下:


String command,=("javac","hello.java"];
Runtime.getRuntime().exec(command);


exec)方法会返回一个 Process对象。Process类是Java中进程类,该类是抽象类,不能使用new关键字创建实例。Process类的常用方法如表11.22所示,开发可以使用getlnputStream)方法获取进程返回的信息。

例题11.9

11.6.2查看内存

例题11.20

 

package a;
 
public class MemoryDemo {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Runtime r = Runtime.getRuntime();
		Integer ints[] =new Integer[10000];
		long before = r.freeMemory();
		System.out.println("赋值前空闲内存字结束:"+before);
		for (int i = 0,length = ints.length;i< length;i++) {
			ints[i]=i;
		}
		long after = r.freeMemory();
		System.out.println("赋值后空闲内存字节数:"+after);
		System.out.println("数组用掉的内存字节数:"+(before-after));
	}
 
}

运行结果:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值