JavaSE部分干货总结

本文总结了Java中的进制表示,如二进制0b、八进制0和十六进制0x,并讨论了浮点数的不精确性及其在比较时的问题。此外,还涵盖了类型转换、幂运算、位运算、字符串拼接、可变参数、稀疏数组、重写与重载、静态导入包和内部类等核心概念。对于浮点数的比较,建议使用BigDecimal类来避免精度问题。
摘要由CSDN通过智能技术生成

进制:

二进制0b八进制0十六进制0x

int i = 10 -------10进制 -------------------=10

int i1 = 010 --------8进制 ----------------=8

int i2 = 0x10------16进制 ----------------=16

浮点数:

float f = 0.1f; double d = 1.0/10;

虽然控制台输出打印f和d的值都为0.1,但是打印(f==d)为false;

float d1 = 231313123123312313f;

flloat d2 = d1+1;

控制台输出打印(d1==d2)为true

**以上原因================浮点数,有限且离散,所表示的值为大约值,(不能精确表示数值)所以避免浮点数进行比较,用BigDecmal类**

类型转换:

低-------------------------------------------------------------------高

byte,short,char–>int–>long–>float–>double

int i = 128;

byte b = (byte) i;

控制台打印 b 的值 为 -128 ,原因 128大于byte类型的大小(内存溢出)

JDK7 新特性,数字之间可以用下划线分隔

int i = 10_0000_0000;

幂运算

double pow = Math.pow(2, 3); //2的3次幂

位运算

System.out.println(2<<3);//2*8的快速算法 << *2   >> /2

加号(字符串拼接)

System.out.println(10+20+"");//这个值为30,先计算后拼接
System.out.println(""+10+20);//这个值为1020,先拼接,拼接后为字符串,接下来的加号为字符串拼接

可变参数

JDK1.5开始,在指定参数类型后加一个省略号(…)

一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。

int add(int...a);

稀疏数组

public abstract class Demo {
    public static void main(String[] args) {
        //创建一个数组11*11 原始数组
        int[][] array1 = new int[11][11];
        array1[1][2] = 1;
        array1[2][3] = 2;
        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
        //转换为稀疏数组保存
        //获取有效值的个数
        int sum = 0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                if (array1[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("有效个数的值是:"+sum);
        int[][] array2 = new int[sum+1][3];//创建稀疏数组
        array2[0][0] = array1.length;
        array2[0][1] = array1.length;
        array2[0][2] = sum;
        //遍历二维数组,将非零的值,存放到稀疏数组中
        int count = 0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                if(array1[i][j]!=0){
                    count++;
                    array2[count][0] = i;
                    array2[count][1] = j;
                    array2[count][2] = array1[i][j];
                }
            }
        }
        //输出稀疏数组
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i][0]+"\t"
                    +array2[i][1]+"\t"
                    +array2[i][2]+"\t");
        }
        /************还原数组***************/
        //读取稀疏数组
        int[][] array3 = new int[array2[0][0]][array2[0][1]];
        //还原值
        for (int i = 1; i < array2.length; i++) {
            array3[array2[i][0]][array2[i][1]] = array2[i][2];
        }
        //输出还原后的数组
        for (int[] ints : array3) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
    }
}

重写与重载

重载发生在本类,重写是发生在有继承关系的子类里,重写了父类的方法。

重载中方法名一样,参数不一样(类型,数量,顺序)与返回值无关;重写中方法名一样,参数一样,返回值必须一样或者是派生类,修饰符范围要大于等于父类,抛出的异常范围不能大于父类,方法体不同

静态导入包

import static java.lang.Math.random;
public abstract class Demo {
    public static void main(String[] args) {
        System.out.println(random());
    }
}

内部类

成员内部类

public class Out {
    private int id = 10;
    public class Inner{
        public void in(){
            System.out.println("内部类方法");
        }
        public void getId(){
            System.out.println(id);//内部类可获得外部类私有属性
        }
    }
}
class main{//调用内部类方式
    public static void main(String[] args) {
        Out out = new Out();
        Out.Inner inner = out.new Inner();
        inner.in();
    }
}

静态内部类

public class Out {
    private static int id = 10;
    public static class Inner{
        public void in(){
            System.out.println("内部类方法");
        }
        public void getId(){
            System.out.println(id);//内部类可获得外部类私有属性
        }
    }
}

局部内部类

public class Out {
    public void method(){
        class inner{

        }
    }
}

自定义异常类

public  class MyException extends Exception{
    private int detail;

    public MyException(int a) {
        this.detail=a;
    }

    @Override
    public String toString() {
        return "MyException{" +
                "detail=" + detail +
                '}';
    }
}

-----参考b站up主:遇见狂神说

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值