Java基础知识 Part01

    1. 常用开发工具,反编译
      1. Cavaj java decomplier
        1. give support to Java applets, JAR, ZIP
      2. Garbage Collection
        1. 用于检查并释放那些可以被释放的(没有被引用变量指向的堆对象)内存空间
        2. Feature
          1. Automatically start
          2. 无法精确控制和干预,可以调用System.gc(),但不是立刻执行
          3. 垃圾回收时会暂停程序

     

    1. 变量/基本数据类型
      1. 变量定义
      2. 变量类型
        1. 八种基本类型
        2. boolean占用内存为不确定值, ORACLE JVM转为int后计算
          1. <JVM虚拟机规范>单独出现时用int(4字节)表示,在数组中时为单字节
      3. 变量声明:
        1. 局部变量,使用前赋值或第一次赋值
        2. 可以多个变量一起声明
      4. 变量命名(标识符:对包,,方法,参数和变量等要素命名时使用的字符序列)
        1. 数字,字母,下划线,$
        2. 不能用数字开头
        3. 不能使用关键字,保留字
        4. 严格区分大小写,可以使用中文,长度无限制
        5. 命名习惯:驼峰命名法.类名大驼峰.包名全小写.方法名,变量,常量,属性 ->小驼峰,见名知意

     

    1. 进制与转换
      1. 二进制:数据以0b/0B开头.
      2. 八进制:数据以0开头(不常用)
        1. 转为二进制,只需要将每个八进制位替换为三个二进制即可
      3. 十六进制:基数为16, 0x/0X开头
        1. 效率高
        2. 转为二进制,只需要将每个十六进制替换为四个二进制即可
      1. 补码:
        1. 二进制是以补码形式表示
        1. 正数补码:与原码形式相同
        2. 负数补码:除符号位外,有效值部分(绝对值)按位取反,再加1.
        1. 由此得出 ->第一位为符号位, 1为负数, 0为正数
          1. 正数最大值为 -> 01111111 11111111 11111111 11111111
          2. 0 -> 00000000 00000000 00000000 00000000
          3. 负数最小值为 -> 10000000 00000000 00000000 00000000
        2. 目的:
          1. 使符号位能与有效值部分一起参加运算,从而简化运算规则.
          2. 使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计
        1. 若符号位有进位则舍去
        1. 反码中存在负的零,而补码就把负的零抹去了

     

    1. 二进制与十进制互转:
      1. 210 ->按权相加
        1. 1.1
          1. 1*2^0 + 1*2^-1
      2. 102
        1. 整数部分:2取余,逆序排列(直到除完)
        2. 小数部分:2取整,顺序排列(直到为0)

     

    1. 基本数据类型转换
      1. boolean不能转换为任意类型
      2. 图片描述

    补充float->double(实线),图例:实线-->无精度损失,虚线-->可能有精度损失,图中的所有线段均可以自动转换,无需强转

    1. byte, char, short可以直接赋值取值范围内的字面量
      1. 三者计算结果会直接转为int
      2. 特殊情况:
        1. byte b = 1 + 2; //编译正确,这是因为编译时,会自动将常量/字面量直接相加
    2. 整数运算溢出
      • int a = Integer.MAX_VALUE;

    a = a+1;//最大值加1不会出错,而是得到最小值

    01111111111111111111111111111111 + 1 ==>10000000000000000000000000000000

    1. 浮点数运算不精确(可能不精确)
      • 2.0 - 1.9 ==>0.1000000000009
      • 4.35 * 100 ==>434.999999999999996
    2. 浮点数的特殊值

    Infinity

    • -Positive正无穷大

      • Negative

    Double.MAX_VALUE * 2
    3.14/0
    , double/0,int/0.0

    isInfinite()

    NaN

    - Not a Number

    负数开平方:Math.sqrt(-2)

    isNaN()

     

    1. Notice:
      1. 即使int->float, long->float, long->double不需要强制类型转换,但也有可能丢失精度

     

    1. 关键字,转义字符
      1. goto…
      2. \n \r \t \' \\ \"

     

    1. 运算符与优先级
      1. + - * / % ++ --
      2. 自增,自减
        1. 在前,先计算,再赋值
        2. 在后,先赋值,再计算

     

    1. 复合运算符
      1. 自动强制类型转换,可能会溢出

     

    1. 注意
      1. javac "" --> 加引号是为了防止Windows文件名有空格

     

    1. 拓展
      1. 关于回车和换行
        1. '\r'是回车,前者使光标到行首,(carriage return
        2. '\n'是换行,后者使光标下移一格,(line feed
        3. \r是回车,return
        4. \n是换行, newline
      2. ASCII
        1. 48 --> '0'
        2. 65 --> 'A'
        3. 97 --> 'a'
      1. 强制类型转换时,多出则截断
        1. int -> byte,截断前三个字节,只留最后一个字节
        2. 浮点数转整数时,舍弃小数.若超过目标数据类型的取值范围则会溢出(不报错).
        3. 少位时则,若正数,前面补0.若负数,前面补1

     

    1. 补充
      1. NotePad++ Configuration for instant run
        1. javac command
          1. NPP_SAVE
          2. javac "$(FULL_CURRENT_PATH)"
        2. java command
          1. cd "$(CURRENT_DIRECTORY)"
          2. java "$(NAME_PART)"
      2. Scanner s = new Scanner(System.in);
        1. s.nextInt();阻塞方法
          1. 以空白符,回车换行符为结束
        2. s.close; //close InputStream
      3. Integer.MAX_VALUE; Integer.MIN_VALUE;
      1. Math.sqrt(double raw)开方
        1. Math.pow(double a, double b), ab次幂
      2. '\u0000'NUL(null)是空字符,不是空格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值