Java常用API复习

概念问题

Objiect类的toString方法返回的是什么?equals方法比较的是什么?子类重写后返回什么?比较什么?

  • toString方法没有重写返回的是调用对象的地址值,重写后返回的是调用对象的成员变量值
  • equals方法没有重写返回的是对象地址值是否相同的boolean值,重写后返回的是对象成员变量内容比较是否相同的boolean值

方法重载与方法重写区别?

  • 方法重载是在一个类中 方法名相同 参数列表不同(可以是个数不同,参数类型不同,参数位置不同),与返回值无关
  • 方法重写则是子类或实现类需要重写父类或接口中继承过来的方法,方法声明必须相同

如何获取当前日期对象?getTime方法获取到的毫秒值开始时间是谁?

获取当前日期对象的步骤为

  • 调用java.util.Date类
  • 在测试类中创建Date当前日期对象

getTime方法获得的是调用对象距离时间原点的毫秒值
时间原点即开始时间 为1970年1月1日 00:00:00 而中国时区是在东八区 需要延后8小时

示例代码如下

//导包
import java.util.Date;
//创建类 调用main方法
public class Date_Practise{
	public static void main(String[] args){
	//创建Date对象
	Date date = new Date();
	//打印 获取当前时间值
	System.out.println(date);   //打印效果例如:Sun Jun 25 18:50:46 CST 2023
	
	//利用date对象调用getTime方法  因为1秒等于1000毫秒所以time的数据类型为长整型
	long time = date.getTime();
	System.out.println(time);
	}
}

日期如何转换为指定格式的字符串?字符串如何解析成日期?

日期→字符串

  • 创建Date类 获得当前日期
  • 利用DateFormat类 将日期转换为字符串
    示例代码如下
//导包
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
//创建类 调用main方法
public class Date_Practise{
	public static void main(String[] args){
	//创建Date对象
	    Date date = new Date();
//调用DateFormat类,由于其作为抽象类 调用其子类对象SimpleDateFormat创建df格式化对象
        DateFormat df = new SimpleDateFormat("y年MM月dd日 HH:mm:ss E"); 
        //使用DateFormat中的format方法 获得指定格式的字符串
        String str = df.format(date);
        System.out.println(str);
	}
}

字符串→日期

  • 给定一个日期格式的字符串
  • 利用DateFormat类 将字符串格式录入 转换为日期
        String str1 = "2021-10-13";
        DateFormat df1  = new SimpleDateFormat("yy-MM-dd");
        //需要调用的是parse方法 返回值为Date类
        Date d = df1.parse(str1);
        System.out.println(d);

如何获取日历类的对象?通过日历对象获取到年

  • 利用Java中的Calendar类,而此类作为抽象类 提供了静态常量创建对象
  • 通过ger(int field)方法可以获得给定日历字段的值
       //静态常量创建对象
       Calender c = Calender.getInstance();
       //通过Calender中的静态常量获取年月日
      int year = c.get(Calender.YEAR)

System类的复制数组的方法是什么参数是什么?

  • static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
  • 形参列表中的含义依次为 源数组 源数组开始索引,目标数组.目标数组的开始索引 要复制的个数
public static void main(String[] args) {
   	//给一个源数组
      int[] arr = {2,3,1,5,7};
      //定义一个目标数组,设置长度为 4
      int[] arr1 = new int[4];
      //调用System的arraycopy方法
      System.arraycopy(arr,1,arr1,0,4);
   	 //遍历目标数组 打印结结果
       for (int i = 0; i < arr1.length; i++) {
           System.out.println(arr1[i]); //3 1 5 7
       }
   }

冒泡排序的原理是什么?代码

  • 原理::前一个元素和后一个元素比较,如果大于则交换 否则不变
  • 代码示例
public class SuanFa_Pratice {
   public static void main(String[] args) {
   /./给定一个实例数组
       int[] arr = {2,5,3,1,0};
       //冒泡排序的原理:相邻两个元素作比较 如果前一个元素比后一个元素大则交换 否则不变
       //外层控制循环比较的次数
       for (int i = 0; i < arr.length-1; i++) {
       //内层控制每次循环比较几次 每次比较都减少一个元素
           for (int i1 = 0; i1 < arr.length-1-i; i1++) {
               if(arr[i1]>arr[i1+1]){
                   int tem = arr[i1];
                   arr[i1] = arr[i1+1];
                   arr[i1+1] = tem;
               }
           }
       }
   System.out.println(arrayToString(arr));
   }
//构造一个方法arrayToString 将数组以字符串形式打印出来
   public static String arrayToString(int[] arr){
   //创建StringBulider类的对象sb   形成字符串缓冲区 依次添加数组所需元素
       StringBuilder sb = new StringBuilder("[");
   	//遍历数组
       for (int i = 0; i < arr.length; i++) {
           sb.append(arr[i]);
           if(i == arr.length-1){
               sb.append("]");
           }else{
               sb.append(",");
           }
       }
       return sb.toString();
   }
}

二分查找的原理是什么?代码?

原理

  • 升序排列,取数组(必须有序)的中间索引位置比较大小 如大于则 数组前面舍去比较后面,反之亦然;若相等,则直接返回索引值;若不等,返回-1。

代码实例

public class TwoCheck {
   public static void main(String[] args) {
       //给定一个有序的数组实例
       int[] arr1 = {2, 4, 7, 13, 18, 34, 38, 45, 46};
       //定一个想要查找的值
       int a1 = 38;
       //调用方法
       System.out.println(twoIndex(arr1, a1));//返回结果6
   }


   //定义一个二分查找的方法twoIndex
   public static int twoIndex(int arr[],int a){
       //先设定最大最小值
       int min = 0;
       int max = arr.length;
       //指针mid的位置要一直在min和max的中间 因此要放到循环里面设置
       //使用的是while循环结构 判断的是循环能够进行下去的条件 那就是min<=max
       while(min<= max) {
           int mid = (min + max) / 2;
           if(arr[mid]>a){
               max = mid-1;
           }if(arr[mid]<a){
               min = mid+1;
           }
           if(arr[mid]==a){
               return mid;
           }
       }
       return -1;
   }
}

如何进行超大数的计算?如何进行小数的精确计算?

超大数的计算
使用Java的BigInteger类做超大数的计算
其在java.math包下,可以做不可变的、任意精度的整数计算
当数据范围超过long类型后 可以使用此类做运算 是不限制长度的
小数的精确计算
可以使用Java的BigDecimal做小数的精确计算
其在java.math包下 可以做不可变的 任意精度的 有符号的十进制数
可以实现超大浮点数的精确计算

代码演示自动装箱和拆箱

  • 拆装箱指的是基本数据类型作为常量无法进行有效应用 将其转变为Java的包装类型可以调用方法
  • 代码示例
       //自动装箱
       Integer i = 10;
       //自动拆箱
      int i1 = i;

字符串如何转换为基本类型?基本类型如何转换为字符串?

  • 基本类型转换为字符串 可以直接转(以int为例)
      String s = 10 + " ";
  • 字符串转换为基本类型则需包装类中的方法parseInt(以Int为例)
     int i = Integer.parseInt("10");

异常的继承体系?编译时异常和运行时异常区别?

异常的继承体系

throw关键字和throws关键字的区别

  • throw 异常对象 在方法体中使用 抛出异常对象
  • throws 异常的类型 在方法的声明中使用 声明异常

如何异常没有捕获到finally代码块中的内容是否会执行?

  • 可以执行
  • 只要进入到try catch语句中 除非system.exit()JVM虚拟机退出 否则finally中的语句一定执行

父类方法没有抛异常子类重写父类方法时能不能抛异常?

  • 不可以
  • 子类抛的异常只能小于等于父类抛出的异常(指的是异常的继承地位) 而父类都没有抛异常那子类不能抛出异常
  • 此时子类如果出现异常 只能用try catch捕获异常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值