栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java进阶知识之零基础(五)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java进阶知识之零基础(五)

十五.Java进阶知识之基本类型的包装类

1.基本类型包装类的概述:

​         将基本数据类型封装成对象的好处在于:可以在对象中定义更多功能方法操作该数据。

​         常用操作之一:用于基本数据类型与字符串之间的转换。“123”->123

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

2.Integer类的概述和使用:

public class JavaAdvanced03_Integer {
    public static void main(String[] args) {
        Integer integer = Integer.valueOf(100);
        System.out.println(integer);
​
        Integer integer1 = Integer.valueOf("100");
        System.out.println(integer1);
    }
}

3.自动装箱和自动拆箱:

​         装箱:把基本数据类型转换成对应的包装类;

​         拆箱:把包装类类型转换成对应的基本数据类型。

public class JavaAdvanced03_Integer2 {
    public static void main(String[] args) {
        //自动装箱:
        //自动:Java底层会帮我们自动调用valueof方法
        //装箱:把一个基本数据类型变成对应的包装类
        Integer integer = 100;
        System.out.println(integer);
​
        //自动拆箱:
        //拆箱:把一个包装类变成基本数据类型
        int integer1 = integer;
        System.out.println(integer1);
​
        Integer integer3 = 100; //自动装箱
        integer3 += 100; //integer3 = integer3 + 100; 先自动拆箱再自动装箱
        System.out.println(integer3);
    }
}

4.Integer成员方法:

public class JavaAdvanced03_Integer3 {
    public static void main(String[] args) {
        String s1 = "100";
        int i1 = 200;
​
        int i2 = Integer.parseInt(s1);//可以将字符串类型的整数变成int类型的整数
        System.out.println(i1 + i2);
​
        int i3 = 100;
        String s2 = i3 + "";//方式一:把int类型变成字符串类型
        System.out.println(s2);
​
        int i4 = 100;
        String s3 = String.valueOf(i4);//方式二:把int类型变成字符串类型
        System.out.println(s3);
    }
}

5.Integer案例:

public class JavaAdvanced03_IntegerCase {
    
    public static void main(String[] args) {
        String s = "91 27 46 38 50";
        String[] split = s.split(" ");
        int[] array = new int[5];
        for (int i = 0; i < split.length; i++) {
            int integer = Integer.parseInt(split[i]);
            array[i] = integer;
        }
​
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}
十六.Java进阶知识之数组的高级操作

1.二分查找:

​ 步骤:

​ (1)定义两个变量,表述要查找的范围,默认min=0,max=最大索引;

​ (2)循环查找,但是min<=max;

​ (3)计算出mid的值;

​ (4)判断mid位置的元素是否为要查找的元素,如果是直接返回对应索引;

​ (5)如果要查找的值在mid的左半边,那么min值不变,max=mid-1,继续下次循环查找;

​ (6)如果要查找的值在mid的右半边,那么max的值不变,min=mid+1,继续下次循环查找;

​ (7)当min>max,表示要查找的元素不存在。

public class JavaAdvanced03_BinarySearch {
    public static void main(String[] args) {
        int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int number = 3;
​
        int index = binarySearchForIndex(arr, number);
        System.out.println(index);
    }
​
    private static int binarySearchForIndex(int[] arr, int number) {
        int min = 0;
        int max = arr.length - 1;
        while (min <= max) {
            int mid = (min + max) / 2;
            if (arr[mid] > number) {
                max = mid - 1;
            } else if (arr[mid] < number) {
                min = mid + 1;
            }else{
                return mid;
            }
        }
        return -1;
    }
}

2.冒泡排序:

public class JavaAdvanced03_BubbleSort {
    public static void main(String[] args) {
        int[] arr = {3, 5, 2, 1, 4};
​
        sort(arr);
    }
​
    private static void sort(int[] arr) {
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j < arr.length-1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
​
        printArr(arr);
    }
​
​
    private static void printArr(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] + " ");
        }
    }
}
十七.Java进阶知识之递归

1.递归的概念:

​         以编程的角度来看,递归指的是方法定义中调用方法本身的现象。

2.递归的案例:

public class JavaAdvanced03_Factorial {
    public static void main(String[] args) {
        int result = getJc(5);
        System.out.println(result);
    }
​
    private static int getJc(int i){
      //1.一定要找到出口
        if(i == 1){
            return 1;
        }else{
          //2.递归的规则
            return i*getJc(i-1);
        }
    }
}
十八.Java进阶知识之Arrays
方法名说明
public static String toString(int[] a)返回指定数组的内容的字符串表示形式
public static void sort(int[] a)按照数字顺序排列指定的数组
public static int binarySearch(int[] a,int key)利用二分查找返回指定元素的索引
import java.util.Arrays;
​
public class JavaAdvanced03_Arrays {
    
    public static void main(String[] args) {
        int[] arr1 = {3,2,4,1,5};
        String s = Arrays.toString(arr1);
        System.out.println(s);//[3, 2, 4, 1, 5]
​
        int[] arr2 = {3,2,4,1,5};
        Arrays.sort(arr2);
        System.out.println(Arrays.toString(arr2));//[1, 2, 3, 4, 5]
​
        int[] arr3 = {1,2,3,4,5};
        int index = Arrays.binarySearch(arr3, 4);
        System.out.println(index);//3
    }
}
十九.Java进阶知识之异常

1.异常的概述:

​         程序出现了不正常的情况,程序在执行过程中,出现了非正常的情况,最终会导致JVM非正常终止。

2.异常的体系:

​ Throwable:

​         Error

​         Exception:RuntimeException,除RuntimeException外的异常

3.JVM默认处理异常方案:

​         把异常的名称,异常的原因及异常出现的位置等信息输出在控制台;

​         程序停止执行。

4.异常处理方式:

(1)throws:

throws 异常类名;
import java.text.ParseException;
import java.text.SimpleDateFormat;
​
public class JavaAdvanced03_throws {
    public static void main(String[] args) throws ParseException {
        method();
        method2();
    }
​
    //告诉调用者,我可能出现这样的异常哦!如果方法中没有出现异常,正常执行;如果出现了异常,把这个异常交给了调用者处理
  
  //如果声明的异常是一个运行时异常,那么声明的代码可以省略
    private static void method() throws NullPointerException{
        int[] a = null;
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }
  
    //如果声明的异常是一个编译时异常,那么声明的代码不可以省略
    private static void method2() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        sdf.parse("2022-7-28");
    }
}
​

throw:

throw new 异常()
public class JavaAdvanced03_throw {
    public static void main(String[] args) {
        System.out.println(1);
        System.out.println(1);
        System.out.println(1);
        System.out.println(1);
        throw new RuntimeException();//下面的代码不会执行
        //System.out.println(1);
    }
}

(2)try...catch:

try{
  可能出现异常的代码;
}catch(异常类名 变量名){
  异常处理的代码;
}
public class JavaAdvanced03_tryCatch {
    public static void main(String[] args) {
        int[] arr = null;
        //好处:为了能让代码继续往下运行
        try{
            printArr(arr);
        }catch (NullPointerException e){
            System.out.println("参数不能为空");
        }
        System.out.println("我最帅");
    }
​
    private static void printArr(int[] arr) {
        if(arr == null){
            throw new NullPointerException();
        }else{
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }
    }
}

注意点:

(1)如果try中没有遇到问题:不会执行catch里面的代码;

import java.util.Scanner;
​
public class JavaAdvanced03_tryCatch2 {
    public static void main(String[] args) {
        try {
            Scanner sc = new Scanner(System.in);
            System.out.println("年龄:");
            String line = sc.nextLine();
            int age = Integer.parseInt(line);
            System.out.println(age);//执行
            System.out.println("测试1");//执行
        } catch (NumberFormatException e) {
            System.out.println("执行了吗?");//不执行
        }
        System.out.println("测试2");//执行
    }
}

(2)如果try中遇到了问题:直接跳转到catch语句中,try中的代码不再执行;

import java.util.Scanner;
​
public class JavaAdvanced03_tryCatch2 {
    public static void main(String[] args) {
        try {
            Scanner sc = new Scanner(System.in);
            System.out.println("年龄:");
            String line = sc.nextLine();
            int age = Integer.parseInt(line);
            System.out.println(age);//不执行
            System.out.println("测试1");//不执行
        } catch (NumberFormatException e) {
            System.out.println("执行了吗?");//执行
        }
        System.out.println("测试2");//执行
    }
}

(3)如果出现的问题没有捕获到:try...catch相当于没有写,默认交给虚拟机;

import java.util.Scanner;
​
public class JavaAdvanced03_tryCatch2 {
    public static void main(String[] args) {
        try {
            Scanner sc = new Scanner(System.in);
            System.out.println("年龄:");
            String line = sc.nextLine();
            int age = Integer.parseInt(line);
            System.out.println(age);//不执行
            System.out.println("测试1");//不执行
        } catch (NullPointerException e) {
            System.out.println("执行了吗?");//不执行
        }
        System.out.println("测试2");//不执行
    }
}

(4)同时有可能多个异常:写多个catch;

import java.util.Scanner;
​
public class JavaAdvanced03_tryCatch2 {
    public static void main(String[] args) {
        try {
            Scanner sc = new Scanner(System.in);
            System.out.println("年龄:");
            String line = sc.nextLine();
            int age = Integer.parseInt(line);
            System.out.println(age);
            System.out.println(2 / 0);
        } catch (NumberFormatException e) {
            System.out.println("格式化异常");
        } catch (ArithmeticException e) {
            System.out.println("数学运算异常");
        }
        System.out.println("测试");
    }
}

5.throws和throw的区别:

throwsthrow
用在方法声明后面,跟的是异常类名用在方法体内,跟的是异常对象名
表示声明异常,调用该方法有可能会出现这样的异常表示手动抛出异常对象,由方法体内的语句处理

6.抛出异常的意义:

(1)在方法中,当传递的参数有误,没有继续运行下去的意义,则采取抛出处理,表示让方法结束运行。

(2)告诉调用者方法中出现了问题。

7.Throwable的成员方法:

方法名说明
public String getMessage()返回此异常的详细信息字符串
public String toString()返回此可抛出的简短信息
public void printStackTrace()把异常的错误信息输出在控制台上
public class JavaAdvanced03_throwable {
    
    public static void main(String[] args) {
        try {
            int[] arr = {1,2,3};
            System.out.println(arr[10]);
        } catch (ArrayIndexOutOfBoundsException e) {
            String message = e.getMessage();
            System.out.println(message);
​
            String message1 = e.toString();
            System.out.println(message1);
​
            e.printStackTrace();
        }
        System.out.println("我最帅");
    }
}

8.自定义异常:

public class AgeOutOfBoundsException extends RuntimeException{
    public AgeOutOfBoundsException() {
    }
​
    public AgeOutOfBoundsException(String message) {
        super(message);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031193.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号