title: Java学习笔记01
date: 2019-12-17 20:51:58
tags:
- Java
- 基础
categories: Java学习笔记
写在前面
我食言了0.0,Java真香。
跟舍友以及师兄聊了一下,大家普遍认为学习Java要比学习C++更有出路,趁着时间来得及,开始撸起袖子学Java。
之前有一些C++的底子,学习起来不算吃力,有很多地方跟C++还是很类似的。
Constant 常量
-
字符串常量:用双引号括起来
-
整数常量
-
小数常量
-
字符常量:用单引号括起来,并且只能放单个数字字母或者符号(单引号不可以不放任何字符,但是可以有空格
-
布尔常量:true、false
1 byte = 8 bit
1 k = 1024 b
Scale 进制
- 二进制:以0b开头(b可以大写可以小写)
- 八进制:以0开头
- 十六进制:以0x开头(x可以大写可以小写)
十进制转其他进制:除积倒取余
其他进制转十进制:系数×基数的权次幂相加
原码:最高位表示符号位,0正1负
反码:正数的反码与原码相同;负数的反码是除符号位外,逐位取反
补码:正数的补码与原码相同;负数的补码是在反码的末位加1
变量
数据类型 变量名 = 变量值
数据类型
基本数据类型
- 整数型
- byte:一个字节,从-128到127
- short:两个字节,-215~215-1
- int:四个字节,-231~231-1 整数默认为int类型
- long:八个字节,-263~253-1 long类型要在数字后加L来表示
- 浮点型
- float:占四个字节,-3.403E38~3.403E38 单精度 float要在数字后面加F表示
- double:占八个字节,-1.798E308~1.798E308 双精度 小数默认为double
- 字符型
- char:占两个字节,0~65535
- 布尔型
- boolean:理论上是1/8个字节(C++),但是在Java里没有明确指定大小
引用数据类型
- 面向对象
数据类型隐式转换
int + byte;
规则:取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算
数据类型强制转换
b = (byte)(a + b);
如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
字符和字符串参与运算
- ‘a’ + 1 ; ->得到的结果是98,字符类型先提升为int类型,再加1
- 记住三个重要的ASCII码值
- ‘0’ : 48
- ‘A’ : 65
- ‘a’ : 97
- “5 + 5 =” + 5 + 5 ->得到的结果是5 + 5 =55,此时+会被认为是字符串连接符
Operator 运算符
算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符
算数运算符
- +,-,*,/,%,++,–
- % 取余:符号只与左边有关系
赋值运算符
- =,+=,-=,*=,/=
比较(关系或者条件)运算符
- ==,!=,>=,<,<=
逻辑运算符
- &,|,^,! 与,或,异或(两边相同为false,两边不同为true),非
- &&
- 具有短路效果,当左边为false时,右边不执行。而&都会执行
- ||
- 与&&类似,当左边为true时,右边不执行。|左右都会执行
位运算符
-
&,|,^,~ ,>>,>>>,<<
-
二进制位逻辑运算 &:有0则0;|:有1则1;^:相同则0,不同则1;~:按位取反
-
位运算符^
- 特点:一个数据对另一个数据位异或两次,该数本身不变。
- 应用:交换两个数
通常的做法是用到第三方变量,这次限制不允许使用第三方变量
int x = 5,y = 10 x = x ^ y; // 5 ^ 10 y = x ^ y; // 5 ^ 10 ^10,y = 5 x = x ^ y; // 5 ^ 10 ^ 5,x = 10
-
位移运算符,<< 左移;>> 右移;>>> 无符号右移
- 左移:<< 左边最高位丢弃,右边补齐0。向左移动几位就是乘以2的几次幂
- 右移:>> 最高位是0,左边补齐0;最高为是1,左边补齐1
- 无符号右移:>>> 无论最高位是0还是1,左边补齐0
- 最有效率的算出2 * 8的结果
System.out.println(2 << 3);
三目(元)运算符
- 格式:(关系表达式)? 表达式1:表达式2;