java 基础 1.5

本文介绍了Java中二进制、16进制、8进制的基本概念及其转换,包括二进制的前缀0b、16进制前缀0x和8进制前缀0。接着讲解了File类的使用,如新建、删除文件和目录,以及获取文件属性。此外,还详细阐述了Java IO流的概念,包括输入与输出流、字节流与字符流、缓冲流以及Object流。最后,讨论了Java异常处理机制,如try-catch-finally结构和throw关键字的使用。
摘要由CSDN通过智能技术生成

1、二进制(binary)、16进制、八进制

1.1、基本概念

  • 逢2进1
  • 数字:0 1
  • 基数:2
  • 权:128 64 32 16 8 4 2 1
  • 从Java7开始,有了二进制的前缀0b,区分每四位时写个下划线分割,不加前缀代表十进制;

Integer类方法输出指定的十进制数字转换为二进制数

    public static void main(String[] args) {
        int a = 5;
        Integer b = Integer.valueOf(5);
        System.out.println(Integer.toBinaryString(a));
        a++;
        System.out.println(Integer.toBinaryString(a));
        //二进制高位的0会被忽略
        System.out.println(b);
    }

1.2、16进制

作用:缩写二进制,简化书写;

前缀:0x;表示该数字是16进制;

16进制转化二进制:从低位开始,每四位缩一次;四位二进制对应十进制最高数是15,对应16进制每一个位的数,比如1111,对应16进制

int a = 0x292def68;
int b = 0b0010_1001_0010_1101_1110_1111_0110_1000;

1.3、8进制

前缀:0;注意八进制最大的数是7,不能有8、9;

int c = 067;
System.out.println(c); //55

1.4、补码----计算机处理有符号数的一种编码方式;

数据的正负数:最高位以0开头为正数,以1为负数;因此看正负要先把位数补全,看最高位;

溢出:计算的时候如果超过数据类型的最高位,数据会进一位,但是高位的数会被舍弃;如int型,后面32位全部填满后再加1,高位进1,后面全部变0,但高位舍弃,这样数据就变成32个0的数,形成一个随着数据的增加的循环;

int max = Integer.MAX_VALUE;
System.out.println(Integer.toBinaryString(max));//1111111111111111111111111111111
System.out.println(max);//2147483647
int min = Integer.MIN_VALUE;
System.out.println(min);//-2147483648
System.out.println(Integer.toBinaryString(min));//10000000000000000000000000000000

二进制转十进制

  • 正数:所有为1的权数相加

权:      32  16  8  4  2  1
二进制:   1   1   0  1  0  1
十进制:   32+16+4+1----------------53
       
   权:      32  16  8  4  2  1
二进制:   0   0   1  1  0  1
十进制:   8+4+1--------------------13
       
   权:      32  16  8  4  2  1
二进制:   1   0   0  1  1  1
十进制:   32+4+2+1-----------------39

  • 负数:用-1减去0位置对应的权

-1:111...111;(总共32位)

-8:111...011;

 -149:111...01101011;

-2147483648(最小数):100...000;

互补对称现象

-n = ~n+1--------取反加1

设 n = -5;

n = -5 = 111...11011;

~n = 4 = 000...00100;

~n+1 = 5 = 000...00101;

设 n = 10;

n = 10 = 000...01010;

~n = -11 = 111...10101;

~n+1 = -10 = 111...10110;

互补对称图

 最小负数减1 = 最大正数 ---------- 最小正数0减1 = 最小负数-1(位数超过范围,会自动忽略超过范围的高位数);

1.5、位运算

  • 取反:~
  • 0变1,1变0
  • 与运算:&
  • 见0则0,主要用于掩码运算:存储指定位数,位数对应与掩码位数;掩码位数:从低位开始,1的个数称为掩码的位数;
int n = 0x179d5d9e;
int m = 0xf00f0;
int z = n&m;
System.out.println(Integer.toHexString(z)); //d0090
  • 或运算:|
  • 见1则1,主要用于两个数的错位合并 ,如果两个数的位数是一样的话就不能合并了;
int x = 0x8a94;
int y = 0xaa0065;
int plus = x|y;
System.out.println(Integer.toHexString(plus)); //aa8af5
  • 右移位运算:>>>
  • 将2进制数整体向右移动,低位自动溢出舍弃,高位补0;
  • 它数学值等于将数除于2,移动n位就除于2的n次方;b = a/2^n
int a =0x6a7ad9f;
int b =a>>>2;
System.out.println(Integer.toHexString(b));//0x353d6c
  • 左移位运算:<<
  • 将2进制数整体向作移动,高位自动溢出舍弃,低位补0;
  • 它数学值等于将数乘于2,移动n位就乘于2的n次方;; b = a*2^{n}
a = 0xad20c67; //0x56906338
b = a<<3;
System.out.println(Integer.toHexString(b));

2、File类

2.1、新建文件路径并访问文件属性(还没有建文件,这里只指向了硬盘本身已有的一个文件)

public class FileDemo1 {

    public static void main(String[] args) {
        /*
        尽量使用相对路径,而不是使用绝对路劲,减少不同系统间带来的错误
         */
        File file 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值