- 常用开发工具,反编译
- Cavaj java decomplier
- give support to Java applets, JAR, ZIP
- Garbage Collection
- 用于检查并释放那些可以被释放的(没有被引用变量指向的堆对象)内存空间
- Feature
- Automatically start
- 无法精确控制和干预,可以调用System.gc(),但不是立刻执行
- 垃圾回收时会暂停程序
- Cavaj java decomplier
- 变量/基本数据类型
- 变量定义
- 变量类型
- 八种基本类型
- boolean占用内存为不确定值, ORACLE JVM转为int后计算
- <JVM虚拟机规范>单独出现时用int(4字节)表示,在数组中时为单字节
- 变量声明:
- 局部变量,使用前赋值或第一次赋值
- 可以多个变量一起声明
- 变量命名(标识符:对包,类,方法,参数和变量等要素命名时使用的字符序列)
- 数字,字母,下划线,$符
- 不能用数字开头
- 不能使用关键字,保留字
- 严格区分大小写,可以使用中文,长度无限制
- 命名习惯:驼峰命名法.类名大驼峰.包名全小写.方法名,变量,常量,属性 ->小驼峰,见名知意
- 进制与转换
- 二进制:数据以0b/0B开头.
- 八进制:数据以0开头(不常用)
- 转为二进制,只需要将每个八进制位替换为三个二进制即可
- 十六进制:基数为16, 0x/0X开头
- 效率高
- 转为二进制,只需要将每个十六进制替换为四个二进制即可
- 补码:
- 二进制是以补码形式表示
- 正数补码:与原码形式相同
- 负数补码:除符号位外,有效值部分(绝对值)按位取反,再加1.
- 由此得出 ->第一位为符号位, 1为负数, 0为正数
- 正数最大值为 -> 01111111 11111111 11111111 11111111
- 0 -> 00000000 00000000 00000000 00000000
- 负数最小值为 -> 10000000 00000000 00000000 00000000
- 目的:
- 使符号位能与有效值部分一起参加运算,从而简化运算规则.
- 使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计
- 若符号位有进位则舍去
- 反码中存在负的零,而补码就把负的零抹去了
- 二进制与十进制互转:
- 2转10 ->按权相加
- 1.1
- 1*2^0 + 1*2^-1
- 1.1
- 10转2
- 整数部分:除2取余,逆序排列(直到除完)
- 小数部分:乘2取整,顺序排列(直到为0)
- 2转10 ->按权相加
- 基本数据类型转换
- boolean不能转换为任意类型
补充float->double(实线),图例:实线-->无精度损失,虚线-->可能有精度损失,图中的所有线段均可以自动转换,无需强转
- byte, char, short可以直接赋值取值范围内的字面量
- 三者计算结果会直接转为int
- 特殊情况:
- byte b = 1 + 2; //编译正确,这是因为编译时,会自动将常量/字面量直接相加
- 整数运算溢出
- int a = Integer.MAX_VALUE;
a = a+1;//最大值加1不会出错,而是得到最小值
01111111111111111111111111111111 + 1 ==>10000000000000000000000000000000
- 浮点数运算不精确(可能不精确)
- 2.0 - 1.9 ==>0.1000000000009
- 4.35 * 100 ==>434.999999999999996
- 浮点数的特殊值
Infinity
-Positive正无穷大
- Negative
Double.MAX_VALUE * 2
3.14/0, double/0,int/0.0isInfinite()
NaN
- Not a Number
负数开平方:Math.sqrt(-2)
isNaN()
- Notice:
- 即使int->float, long->float, long->double不需要强制类型转换,但也有可能丢失精度
- 关键字,转义字符
- goto…
- \n \r \t \' \\ \"
- 运算符与优先级
- + - * / % ++ --
- 自增,自减
- 在前,先计算,再赋值
- 在后,先赋值,再计算
- 复合运算符
- 自动强制类型转换,可能会溢出
- 注意
- javac "" --> 加引号是为了防止Windows文件名有空格
- 拓展
- 关于回车和换行
- '\r'是回车,前者使光标到行首,(carriage return)
- '\n'是换行,后者使光标下移一格,(line feed)
- \r是回车,return
- \n是换行, newline
- ASCII
- 48 --> '0'
- 65 --> 'A'
- 97 --> 'a'
- 强制类型转换时,多出则截断
- 如int -> byte,截断前三个字节,只留最后一个字节
- 浮点数转整数时,舍弃小数.若超过目标数据类型的取值范围则会溢出(不报错).
- 少位时则,若正数,前面补0.若负数,前面补1
- 关于回车和换行
- 补充
- NotePad++ Configuration for instant run
- javac command
- NPP_SAVE
- javac "$(FULL_CURRENT_PATH)"
- java command
- cd "$(CURRENT_DIRECTORY)"
- java "$(NAME_PART)"
- javac command
- Scanner s = new Scanner(System.in);
- s.nextInt();阻塞方法
- 以空白符,回车换行符为结束
- s.close; //close InputStream
- s.nextInt();阻塞方法
- Integer.MAX_VALUE; Integer.MIN_VALUE;
- Math.sqrt(double raw)开方
- Math.pow(double a, double b), a的b次幂
- '\u0000'是NUL(null)是空字符,不是空格
- NotePad++ Configuration for instant run
- 常用开发工具,反编译
Java基础知识 Part01
最新推荐文章于 2024-04-23 14:42:29 发布