java 02()-java
java 02()
java变量&数组&标准输入输出&运算符&String
~~ 有出错的地方,我会及时改正owo ~~
标识符(好像包含关键字)命名规则
- 标识符由字母、数字、下划线、美元等(比如中文也可以但不是所有unicode中所有都可以 比如#)组成
- 不能用关键字哦(会有歧义)
- 尽量见名知意(为人方正)
- 类 驼峰原则 变量、方法 第一个单词首字母不大写 常量全部大写(单词之间用下划线分割) 包要小写(好像和不同系统区分大小写有关 所以这么搞)
java常量
- 声明 : final 常量类型 常量标识符
- 只能给一次 值不可以改变了
java变量
- 程序的基本组成单位
- 三要素 : 类型 + 名称 + 值
- 知道变量对应计算机内存里会怎么样
- 变量在同一作用域不能重名(一个班重名会有歧义)
数据类型
- 整数四种(long) 浮点数两种 char boolean(true|false) 三个引用数据类型 类、引用、接口
- 整形
知道为啥能表示的数是这个范围
整形常量默认int型,long的要加L
整形有固定字段长度(和字节可能不太一样)和表示范围,不受OS的影响
bit计算机中最小的存储单位,byte基本的存储单元 - 知道为啥能表示的数是这个范围
- 整形常量默认int型,long的要加L
- 整形有固定字段长度(和字节可能不太一样)和表示范围,不受OS的影响
- bit计算机中最小的存储单位,byte基本的存储单元
- 浮点型
为啥这个范围
常量默认double,float要加f,常量有两种表示方式: 十进制数(.12)、科学计数法(5.12e2);
浮点也有固定字段长度和表示范围,不受os影响
浮点数不精确 ,最好用double(或许这就是为什么默认是double), 比较最好还是做差比某个数小
v. 虽然double能被浮点型的数赋值,但没有直接的double来的准确 - 为啥这个范围
- 常量默认double,float要加f,常量有两种表示方式: 十进制数(.12)、科学计数法(5.12e2);
- 浮点也有固定字段长度和表示范围,不受os影响
-
浮点数不精确 ,最好用double(或许这就是为什么默认是double), 比较最好还是做差比某个数小
v. 虽然double能被浮点型的数赋值,但没有直接的double来的准确
double num10 = 2.1234567851;
double num11 = 2.1234567851f;
// 这两值不一样
- 字符型
两个字节
没有负号(无符号型),java没有unsigned
值能有’字符’,65 97 48,转义字符(\u四个数字可带表十六进制对应的字符,\uface)
字符在计算机中,直接存数(按照的是unicode编码表,有点浪费空间,汉字和字母都一样,文件保存为什么类型是你写的代码对应的字符,不关人家java字符的事) - 两个字节
- 没有负号(无符号型),java没有unsigned
- 值能有’字符’,65 97 48,转义字符(\u四个数字可带表十六进制对应的字符,\uface)
- 字符在计算机中,直接存数(按照的是unicode编码表,有点浪费空间,汉字和字母都一样,文件保存为什么类型是你写的代码对应的字符,不关人家java字符的事)
- 布尔型(boolean)
值只有true和false(不能用01代替,好像为了强类型?)
变量占四个字节 数组占一个字节(数组会被当初byte数组) - 值只有true和false(不能用01代替,好像为了强类型?)
- 变量占四个字节 数组占一个字节(数组会被当初byte数组)
数组
- 数组也是数据类型 ,是引用数据类型(解释二维数组有用)
- 创建以后长度就确定了,有length这个属性
- 定义一个数组:声明数组 + 创造数组 , 各有两种方式
double[] scores = new double[5]; // 动态初始化
double scores2[] = {3.14,2.2};
- 动态初始化 , 应该是jvm会给默认值的
基本数据类型转换
- frame :
赋值时
运算时 - 赋值时
- 运算时
- boolean 不参与
- 自动类型转换:
知道精度大小排序有两个表(char不能与 byte和short互相转换,当然说的是变量)
运算时 , 结果会是精度最高的那个 (过程中好像也没有所有数据先转到最高的,比如 double a = 1.0 + 2/3);
运算时 , 感觉和c的差不多啊 不过byte char short 最低应该是会变成int的 - 知道精度大小排序有两个表(char不能与 byte和short互相转换,当然说的是变量)
- 运算时 , 结果会是精度最高的那个 (过程中好像也没有所有数据先转到最高的,比如 double a = 1.0 + 2/3);
- 运算时 , 感觉和c的差不多啊 不过byte char short 最低应该是会变成int的
- 强制类型转换:
(int)这种优先级挺高的 记得给后面加括号哦 (double)(……)
应该不是截取的 比如 : byte a = (byte)128; 结果就不是0 而是-128 感觉更像多出来的那部分做循环啊
int 常量可以给 byte 和 short 和 char 赋值 不过要在范围内 - (int)这种优先级挺高的 记得给后面加括号哦 (double)(……)
- 应该不是截取的 比如 : byte a = (byte)128; 结果就不是0 而是-128 感觉更像多出来的那部分做循环啊
- int 常量可以给 byte 和 short 和 char 赋值 不过要在范围内
基本数据类型和String的转换
- 基本类型变String// 高冷的boolean都低下了头, 但不能强转 +””即可
boolean a = false;
String b = a + “” ;
System.out.println(b); - String 变基本数据类型// 使用包装类的相应方法 爱来自java.lang(这个自带不用import)
boolean c1 = Boolean.parseBoolean(b1);
byte c2 = Byte.parseByte(b2);
short c3 = Short.parseShort(b3);
int c4 = Integer.parseInt(b4);
float c6 = Float.parseFloat(b6);
double c7 = Double.parseDouble(b7);
// char 可以用s1.CharAt(int postion)
String s1 = “hello”;
char a = s1.charAt(0);
// String 里面东西要对
int a1 = Integer.parseInt(“hello”);
标准输入输出
- 标准输入分为三步
import 引进来
创建对象(扫描器)
使用方法// 居然没有空白字符的问题 下次遇到 在考虑 开始 结束 和处理空白符的问题ba
Scanner myScanner = new Scanner(System.in); // System.in 算是一个参数把 代表从键盘输入
People lcj = new People();
lcj.name = myScanner.next();lcj.age = myScanner.nextInt();
lcj.where = myScanner.next();
lcj.count = myScanner.nextDouble(); - import 引进来
- 创建对象(扫描器)
- 使用方法
- 标准输出
System.out.println
// 分开行时 可以用 + 连起来 (曾经的\)
System.out.println(“woainiRik” +
“ka”);System.out.print 和上面区别在不换行
out 可以使用printf方法(雾)System.out.printf(“%d”,12); // 不过不能用\连到下一行了(遗憾)
- System.out.println
- System.out.print 和上面区别在不换行
- out 可以使用printf方法(雾)
运算符
-
算术运算符
/ 就记住 小数的问题
a%b 知道本质 a-(int)(a/b)*b 知道有负数的话 符号取决于 被模数 知道有小数的情况
++ — 实际上 java 中会有一个temp的存在// 这里 三步是
// 1.int temp = i;
// 2. i++;
// 3. i = temp
int i = 1;
i = i++; // i = 1// 还有就是 虽然经常说 i++ => i = i+1 但这里 其实是 i++ => i = (byte)(i+1) 类型 是不会提升的 感觉也是合理的
byte i = 127;
i++;运算符
运算+正号
-负号
+加
-减
*乘
/除
%取模(求余)
++自增
–自减
+字符串相加// 关于 0 之前没见过的
System.out.println(7.5 / 0); // 输出的运算结果为Infinity
System.out.println(-7.5 / 0); // 输出的运算结果为-Infinity
System.out.println(7.5 % 0); // 输出的运算结果为NaN
System.out.println(-7.5 % 0); // 输出的运算结果为NaN - / 就记住 小数的问题
- a%b 知道本质 a-(int)(a/b)*b 知道有负数的话 符号取决于 被模数 知道有小数的情况
- ++ — 实际上 java 中会有一个temp的存在
运算符 | 运算 |
---|---|
+ | 正号 |
– | 负号 |
+ | 加 |
– | 减 |
* | 乘 |
/ | 除 |
% | 取模(求余) |
++ | 自增 |
— | 自减 |
+ | 字符串相加 |
-
关系运算符(好感度谁高呢 qwq)
六个 + instanceof
// true
System.out.println(“LCJ” instanceof String); - 六个 + instanceof
-
逻辑运算符
短路与&& 短路或|| 取反! (关于会不会执行 给他个操作就行 看结果的变化)
逻辑与& 逻辑或 | 逻辑异或 ^ - 短路与&& 短路或|| 取反! (关于会不会执行 给他个操作就行 看结果的变化)
- 逻辑与& 逻辑或 | 逻辑异或 ^
-
赋值运算符
基本赋值运算符
复合赋值运算符先算右边 再算左边 且不会有类型提升
// 先算右边 再左边 所以 10/3 = 3 无类型提升
double d = 3;
d += 10/3;// b += 1 => b =(byte)(b+1)
byte b = 127;
b += 1; - 基本赋值运算符
- 复合赋值运算符
先算右边 再算左边 且不会有类型提升
// 先算右边 再左边 所以 10/3 = 3 无类型提升
double d = 3;
d += 10/3;// b += 1 => b =(byte)(b+1)
byte b = 127;
b += 1; - 先算右边 再算左边 且不会有类型提升
-
三元运算符
语法 : 条件表达式 ? 表达式1 :表达式2;
口诀 一真大师// 是去选择哪个执行 并且要值
int a = 3;
int b = 2;
int c = a > b ? a++ : b++; - 语法 : 条件表达式 ? 表达式1 :表达式2;
- 口诀 一真大师
-
运算符优先级
只有单目运算符 和 赋值 运算符 是 从右向左的
一个大概的顺序() {}
单目运算符 强转那个
算术运算符
移位运算符
关系运算符
逻辑运算符
三元运算符
赋值运算符 - 只有单目运算符 和 赋值 运算符 是 从右向左的
- 一个大概的顺序
() {}
单目运算符 强转那个
算术运算符
移位运算符
关系运算符
逻辑运算符
三元运算符
赋值运算符 - () {}
- 单目运算符 强转那个
- 算术运算符
- 移位运算符
- 关系运算符
- 逻辑运算符
- 三元运算符
- 赋值运算符
进制
- 有哪些
二进制 0b开头
八进制
十进制 数字0开头
十六进制 0x开头 - 二进制 0b开头
- 八进制
- 十进制 数字0开头
- 十六进制 0x开头
- 记住
有的字符是哪些 比如 二进制 没有2
再就是逢几进 一 - 有的字符是哪些 比如 二进制 没有2
- 再就是逢几进 一
- 会 这些给我一种 一种 进制 中 有 等级的感觉
2 8 16 转 10
10 转 2 8 16 不断除 直到 商为0 余数倒过来排
2 转 8 16 => 转8 就是 三位一起 有顺序的变过去
8 16 转 2 => 8转2 就是 一位拆成 3位 排过去 - 2 8 16 转 10
- 10 转 2 8 16 不断除 直到 商为0 余数倒过来排
- 2 转 8 16 => 转8 就是 三位一起 有顺序的变过去
- 8 16 转 2 => 8转2 就是 一位拆成 3位 排过去
原码 反码 补码
- qwq 为何诞生 : 好像是和 负数 (好像是还有两个0的问题 我忘了@.@)
- 正数 三码 合 一 负数 反码为原码(除符号位)都取反 补码 就是 再加一 (反过来也要会哦 )
- 运算时 以 补码的方式运算的 看结果时 看原码
- java 没有无符号数(char 就不要捣乱>_<)
位运算符
- 逻辑位运算
按位与
按位或
按位异或
按位取反 - 按位与
- 按位或
- 按位异或
- 按位取反
- 移位运算
算术右移 对于负数 好像 乘2 除 2这种不一定
算术左移
无符号右移 - 算术右移 对于负数 好像 乘2 除 2这种不一定
- 算术左移
- 无符号右移
String
- 定义 : String 字符串变量 = 字符串; String s1 = null; // 好久没有见null 小姐 la
String s2 = “”;
String s3 = “Rikka”; - 字符串 操作
比较字符串
String s1 = “Rikka”;
// 之前 看过 一种值 一样的话 引用值 是一样的 不知道以后 会不会遇见
System.out.println(s1.equals(“rikka”)); // equals 方法区分大小写
System.out.println(s1.equalsIgnoreCase(“rikka”)); // 不区分
System.out.println(s1.startsWith(“r”));
System.out.println(s1.endsWith(“Rikka”));
// starts有重载 第二个参数 为 位置
System.out.println(s1.startsWith(“a”,s1.length()-1));
// int pos = 4;
// System.out.println(s1.endsWith(“kka”,pos));
// 没有获取字符串长度
// 和数组 那里 差个括号
String s1 = “Rikka”;
System.out.println(s1.length());大小写转换
String str = “AbCDefGh”;
String lStr = str.toLowerCase(); // 结果为“abcdefgh”
String uStr = str.toUpperCase(); // 结果为“ABCDEFGH”查找字符串
// 0123456789
String s1 = “RikkaRikka”;System.out.println(“i第一次出现的位置 : ” + s1.indexOf(‘i’));
System.out.println(“i最后一次出现的位置 : ” + s1.lastIndexOf(‘i’));System.out.println(“ikk字符串第一次出现的位置 : ” + s1.indexOf(“ikk”));
System.out.println(“ikk字符串最后一次出现的位置 : ” + s1.lastIndexOf(“ikk”));System.out.println(“i在位置5后 第一次出现的位置 : ” + s1.indexOf(‘i’,5));
System.out.println(“i在位置7后 最后一次出现的位置 : ” + s1.lastIndexOf(‘i’,7)); // 为什么这里是6System.out.println(“ikk字符串在位置5 后 最后一次出现的位置 : ” + s1.lastIndexOf(“ikk”,5)); // 为什么是1
// 如果 last 指定的位置 是 有边界 就可以了
// 试试
System.out.println(“i在位置7后 最后一次出现的位置 : ” + s1.lastIndexOf(‘i’,5)); // 为什么这里是6
// 应该是截取字符串
String s1 = “RikkaRikka”;
// S居然没大写
System.out.println(s1.substring(6));
System.out.println(s1.substring(6,8));去掉首尾 空格
String s1 = ” mzmzrw “;
System.out.println(s1.length()); // 8
String s2 = s1.trim();
System.out.println(s2.length()); // 6替换 字符 或 字串
String s1 = “mzmzrw”;
String s2 = s1.replace(‘m’ , ‘L’);
System.out.println(s2); // LzLzrwString s3 = s1.replaceAll(“zrw” , “Rikka”);
System.out.println(s3); // mzmRikka分割字符串 // 方法
public String[] split(String regex, int limit)
// regex 指定一段就好 (应该)
// limit 最大 分割 次数 为 limit – 1 也就是 limit 会限制 一个 最大 数组长度
// limit 为负数 (都多余了 爱谁谁) 次数无限
// limt 为0 String数组中 最后的 所有 空字符串(指值) 会被丢弃
String str = “boo:and:foo”;
String[] a = str.split(“:”, 2); // “boo”, “and:foo”
String[] b = str.split(“:”, 5); // “boo”, “and”, “foo”
String[] c = str.split(“:”, -2); // “boo”, “and”, “foo”
String[] d = str.split(“o”, 5); // “b”, “”, “:and:f”, “”, “”
String[] e = str.split(“o”, -2); // “b”, “”, “:and:f”, “”, “”
String[] f = str.split(“o”, 0); // “b”, “”, “:and:f”
String[] g = str.split(“m”, 0); // “boo:and:foo” - 比较字符串
- 获取字符串长度
- 大小写转换
- 查找字符串
- 截取字符串
- 去掉首尾 空格
- 替换 字符 或 字串
- 分割字符串 // 方法
public String[] split(String regex, int limit)
// regex 指定一段就好 (应该)
// limit 最大 分割 次数 为 limit – 1 也就是 limit 会限制 一个 最大 数组长度
// limit 为负数 (都多余了 爱谁谁) 次数无限
// limt 为0 String数组中 最后的 所有 空字符串(指值) 会被丢弃
String str = “boo:and:foo”;
String[] a = str.split(“:”, 2); // “boo”, “and:foo”
String[] b = str.split(“:”, 5); // “boo”, “and”, “foo”
String[] c = str.split(“:”, -2); // “boo”, “and”, “foo”
String[] d = str.split(“o”, 5); // “b”, “”, “:and:f”, “”, “”
String[] e = str.split(“o”, -2); // “b”, “”, “:and:f”, “”, “”
String[] f = str.split(“o”, 0); // “b”, “”, “:and:f”
String[] g = str.split(“m”, 0); // “boo:and:foo”
java变量&数组&标准输入输出&运算符&String
~~ 有出错的地方,我会及时改正owo ~~
标识符(好像包含关键字)命名规则
- 标识符由字母、数字、下划线、美元等(比如中文也可以但不是所有unicode中所有都可以 比如#)组成
- 不能用关键字哦(会有歧义)
- 尽量见名知意(为人方正)
- 类 驼峰原则 变量、方法 第一个单词首字母不大写 常量全部大写(单词之间用下划线分割) 包要小写(好像和不同系统区分大小写有关 所以这么搞)
java常量
- 声明 : final 常量类型 常量标识符
- 只能给一次 值不可以改变了
java变量
- 程序的基本组成单位
- 三要素 : 类型 + 名称 + 值
- 知道变量对应计算机内存里会怎么样
- 变量在同一作用域不能重名(一个班重名会有歧义)
数据类型
- 整数四种(long) 浮点数两种 char boolean(true|false) 三个引用数据类型 类、引用、接口
- 整形
知道为啥能表示的数是这个范围
整形常量默认int型,long的要加L
整形有固定字段长度(和字节可能不太一样)和表示范围,不受OS的影响
bit计算机中最小的存储单位,byte基本的存储单元 - 知道为啥能表示的数是这个范围
- 整形常量默认int型,long的要加L
- 整形有固定字段长度(和字节可能不太一样)和表示范围,不受OS的影响
- bit计算机中最小的存储单位,byte基本的存储单元
- 浮点型
为啥这个范围
常量默认double,float要加f,常量有两种表示方式: 十进制数(.12)、科学计数法(5.12e2);
浮点也有固定字段长度和表示范围,不受os影响
浮点数不精确 ,最好用double(或许这就是为什么默认是double), 比较最好还是做差比某个数小
v. 虽然double能被浮点型的数赋值,但没有直接的double来的准确 - 为啥这个范围
- 常量默认double,float要加f,常量有两种表示方式: 十进制数(.12)、科学计数法(5.12e2);
- 浮点也有固定字段长度和表示范围,不受os影响
-
浮点数不精确 ,最好用double(或许这就是为什么默认是double), 比较最好还是做差比某个数小
v. 虽然double能被浮点型的数赋值,但没有直接的double来的准确
double num10 = 2.1234567851;
double num11 = 2.1234567851f;
// 这两值不一样
- 字符型
两个字节
没有负号(无符号型),java没有unsigned
值能有’字符’,65 97 48,转义字符(\u四个数字可带表十六进制对应的字符,\uface)
字符在计算机中,直接存数(按照的是unicode编码表,有点浪费空间,汉字和字母都一样,文件保存为什么类型是你写的代码对应的字符,不关人家java字符的事) - 两个字节
- 没有负号(无符号型),java没有unsigned
- 值能有’字符’,65 97 48,转义字符(\u四个数字可带表十六进制对应的字符,\uface)
- 字符在计算机中,直接存数(按照的是unicode编码表,有点浪费空间,汉字和字母都一样,文件保存为什么类型是你写的代码对应的字符,不关人家java字符的事)
- 布尔型(boolean)
值只有true和false(不能用01代替,好像为了强类型?)
变量占四个字节 数组占一个字节(数组会被当初byte数组) - 值只有true和false(不能用01代替,好像为了强类型?)
- 变量占四个字节 数组占一个字节(数组会被当初byte数组)
数组
- 数组也是数据类型 ,是引用数据类型(解释二维数组有用)
- 创建以后长度就确定了,有length这个属性
- 定义一个数组:声明数组 + 创造数组 , 各有两种方式
double[] scores = new double[5]; // 动态初始化
double scores2[] = {3.14,2.2};
- 动态初始化 , 应该是jvm会给默认值的
基本数据类型转换
- frame :
赋值时
运算时 - 赋值时
- 运算时
- boolean 不参与
- 自动类型转换:
知道精度大小排序有两个表(char不能与 byte和short互相转换,当然说的是变量)
运算时 , 结果会是精度最高的那个 (过程中好像也没有所有数据先转到最高的,比如 double a = 1.0 + 2/3);
运算时 , 感觉和c的差不多啊 不过byte char short 最低应该是会变成int的 - 知道精度大小排序有两个表(char不能与 byte和short互相转换,当然说的是变量)
- 运算时 , 结果会是精度最高的那个 (过程中好像也没有所有数据先转到最高的,比如 double a = 1.0 + 2/3);
- 运算时 , 感觉和c的差不多啊 不过byte char short 最低应该是会变成int的
- 强制类型转换:
(int)这种优先级挺高的 记得给后面加括号哦 (double)(……)
应该不是截取的 比如 : byte a = (byte)128; 结果就不是0 而是-128 感觉更像多出来的那部分做循环啊
int 常量可以给 byte 和 short 和 char 赋值 不过要在范围内 - (int)这种优先级挺高的 记得给后面加括号哦 (double)(……)
- 应该不是截取的 比如 : byte a = (byte)128; 结果就不是0 而是-128 感觉更像多出来的那部分做循环啊
- int 常量可以给 byte 和 short 和 char 赋值 不过要在范围内
基本数据类型和String的转换
- 基本类型变String// 高冷的boolean都低下了头, 但不能强转 +””即可
boolean a = false;
String b = a + “” ;
System.out.println(b); - String 变基本数据类型// 使用包装类的相应方法 爱来自java.lang(这个自带不用import)
boolean c1 = Boolean.parseBoolean(b1);
byte c2 = Byte.parseByte(b2);
short c3 = Short.parseShort(b3);
int c4 = Integer.parseInt(b4);
float c6 = Float.parseFloat(b6);
double c7 = Double.parseDouble(b7);
// char 可以用s1.CharAt(int postion)
String s1 = “hello”;
char a = s1.charAt(0);
// String 里面东西要对
int a1 = Integer.parseInt(“hello”);
标准输入输出
- 标准输入分为三步
import 引进来
创建对象(扫描器)
使用方法// 居然没有空白字符的问题 下次遇到 在考虑 开始 结束 和处理空白符的问题ba
Scanner myScanner = new Scanner(System.in); // System.in 算是一个参数把 代表从键盘输入
People lcj = new People();
lcj.name = myScanner.next();lcj.age = myScanner.nextInt();
lcj.where = myScanner.next();
lcj.count = myScanner.nextDouble(); - import 引进来
- 创建对象(扫描器)
- 使用方法
- 标准输出
System.out.println
// 分开行时 可以用 + 连起来 (曾经的\)
System.out.println(“woainiRik” +
“ka”);System.out.print 和上面区别在不换行
out 可以使用printf方法(雾)System.out.printf(“%d”,12); // 不过不能用\连到下一行了(遗憾)
- System.out.println
- System.out.print 和上面区别在不换行
- out 可以使用printf方法(雾)
运算符
-
算术运算符
/ 就记住 小数的问题
a%b 知道本质 a-(int)(a/b)*b 知道有负数的话 符号取决于 被模数 知道有小数的情况
++ — 实际上 java 中会有一个temp的存在// 这里 三步是
// 1.int temp = i;
// 2. i++;
// 3. i = temp
int i = 1;
i = i++; // i = 1// 还有就是 虽然经常说 i++ => i = i+1 但这里 其实是 i++ => i = (byte)(i+1) 类型 是不会提升的 感觉也是合理的
byte i = 127;
i++;运算符
运算+正号
-负号
+加
-减
*乘
/除
%取模(求余)
++自增
–自减
+字符串相加// 关于 0 之前没见过的
System.out.println(7.5 / 0); // 输出的运算结果为Infinity
System.out.println(-7.5 / 0); // 输出的运算结果为-Infinity
System.out.println(7.5 % 0); // 输出的运算结果为NaN
System.out.println(-7.5 % 0); // 输出的运算结果为NaN - / 就记住 小数的问题
- a%b 知道本质 a-(int)(a/b)*b 知道有负数的话 符号取决于 被模数 知道有小数的情况
- ++ — 实际上 java 中会有一个temp的存在
运算符 | 运算 |
---|---|
+ | 正号 |
– | 负号 |
+ | 加 |
– | 减 |
* | 乘 |
/ | 除 |
% | 取模(求余) |
++ | 自增 |
— | 自减 |
+ | 字符串相加 |
-
关系运算符(好感度谁高呢 qwq)
六个 + instanceof
// true
System.out.println(“LCJ” instanceof String); - 六个 + instanceof
-
逻辑运算符
短路与&& 短路或|| 取反! (关于会不会执行 给他个操作就行 看结果的变化)
逻辑与& 逻辑或 | 逻辑异或 ^ - 短路与&& 短路或|| 取反! (关于会不会执行 给他个操作就行 看结果的变化)
- 逻辑与& 逻辑或 | 逻辑异或 ^
-
赋值运算符
基本赋值运算符
复合赋值运算符先算右边 再算左边 且不会有类型提升
// 先算右边 再左边 所以 10/3 = 3 无类型提升
double d = 3;
d += 10/3;// b += 1 => b =(byte)(b+1)
byte b = 127;
b += 1; - 基本赋值运算符
- 复合赋值运算符
先算右边 再算左边 且不会有类型提升
// 先算右边 再左边 所以 10/3 = 3 无类型提升
double d = 3;
d += 10/3;// b += 1 => b =(byte)(b+1)
byte b = 127;
b += 1; - 先算右边 再算左边 且不会有类型提升
-
三元运算符
语法 : 条件表达式 ? 表达式1 :表达式2;
口诀 一真大师// 是去选择哪个执行 并且要值
int a = 3;
int b = 2;
int c = a > b ? a++ : b++; - 语法 : 条件表达式 ? 表达式1 :表达式2;
- 口诀 一真大师
-
运算符优先级
只有单目运算符 和 赋值 运算符 是 从右向左的
一个大概的顺序() {}
单目运算符 强转那个
算术运算符
移位运算符
关系运算符
逻辑运算符
三元运算符
赋值运算符 - 只有单目运算符 和 赋值 运算符 是 从右向左的
- 一个大概的顺序
() {}
单目运算符 强转那个
算术运算符
移位运算符
关系运算符
逻辑运算符
三元运算符
赋值运算符 - () {}
- 单目运算符 强转那个
- 算术运算符
- 移位运算符
- 关系运算符
- 逻辑运算符
- 三元运算符
- 赋值运算符
进制
- 有哪些
二进制 0b开头
八进制
十进制 数字0开头
十六进制 0x开头 - 二进制 0b开头
- 八进制
- 十进制 数字0开头
- 十六进制 0x开头
- 记住
有的字符是哪些 比如 二进制 没有2
再就是逢几进 一 - 有的字符是哪些 比如 二进制 没有2
- 再就是逢几进 一
- 会 这些给我一种 一种 进制 中 有 等级的感觉
2 8 16 转 10
10 转 2 8 16 不断除 直到 商为0 余数倒过来排
2 转 8 16 => 转8 就是 三位一起 有顺序的变过去
8 16 转 2 => 8转2 就是 一位拆成 3位 排过去 - 2 8 16 转 10
- 10 转 2 8 16 不断除 直到 商为0 余数倒过来排
- 2 转 8 16 => 转8 就是 三位一起 有顺序的变过去
- 8 16 转 2 => 8转2 就是 一位拆成 3位 排过去
原码 反码 补码
- qwq 为何诞生 : 好像是和 负数 (好像是还有两个0的问题 我忘了@.@)
- 正数 三码 合 一 负数 反码为原码(除符号位)都取反 补码 就是 再加一 (反过来也要会哦 )
- 运算时 以 补码的方式运算的 看结果时 看原码
- java 没有无符号数(char 就不要捣乱>_<)
位运算符
- 逻辑位运算
按位与
按位或
按位异或
按位取反 - 按位与
- 按位或
- 按位异或
- 按位取反
- 移位运算
算术右移 对于负数 好像 乘2 除 2这种不一定
算术左移
无符号右移 - 算术右移 对于负数 好像 乘2 除 2这种不一定
- 算术左移
- 无符号右移
String
- 定义 : String 字符串变量 = 字符串; String s1 = null; // 好久没有见null 小姐 la
String s2 = “”;
String s3 = “Rikka”; - 字符串 操作
比较字符串
String s1 = “Rikka”;
// 之前 看过 一种值 一样的话 引用值 是一样的 不知道以后 会不会遇见
System.out.println(s1.equals(“rikka”)); // equals 方法区分大小写
System.out.println(s1.equalsIgnoreCase(“rikka”)); // 不区分
System.out.println(s1.startsWith(“r”));
System.out.println(s1.endsWith(“Rikka”));
// starts有重载 第二个参数 为 位置
System.out.println(s1.startsWith(“a”,s1.length()-1));
// int pos = 4;
// System.out.println(s1.endsWith(“kka”,pos));
// 没有获取字符串长度
// 和数组 那里 差个括号
String s1 = “Rikka”;
System.out.println(s1.length());大小写转换
String str = “AbCDefGh”;
String lStr = str.toLowerCase(); // 结果为“abcdefgh”
String uStr = str.toUpperCase(); // 结果为“ABCDEFGH”查找字符串
// 0123456789
String s1 = “RikkaRikka”;System.out.println(“i第一次出现的位置 : ” + s1.indexOf(‘i’));
System.out.println(“i最后一次出现的位置 : ” + s1.lastIndexOf(‘i’));System.out.println(“ikk字符串第一次出现的位置 : ” + s1.indexOf(“ikk”));
System.out.println(“ikk字符串最后一次出现的位置 : ” + s1.lastIndexOf(“ikk”));System.out.println(“i在位置5后 第一次出现的位置 : ” + s1.indexOf(‘i’,5));
System.out.println(“i在位置7后 最后一次出现的位置 : ” + s1.lastIndexOf(‘i’,7)); // 为什么这里是6System.out.println(“ikk字符串在位置5 后 最后一次出现的位置 : ” + s1.lastIndexOf(“ikk”,5)); // 为什么是1
// 如果 last 指定的位置 是 有边界 就可以了
// 试试
System.out.println(“i在位置7后 最后一次出现的位置 : ” + s1.lastIndexOf(‘i’,5)); // 为什么这里是6
// 应该是截取字符串
String s1 = “RikkaRikka”;
// S居然没大写
System.out.println(s1.substring(6));
System.out.println(s1.substring(6,8));去掉首尾 空格
String s1 = ” mzmzrw “;
System.out.println(s1.length()); // 8
String s2 = s1.trim();
System.out.println(s2.length()); // 6替换 字符 或 字串
String s1 = “mzmzrw”;
String s2 = s1.replace(‘m’ , ‘L’);
System.out.println(s2); // LzLzrwString s3 = s1.replaceAll(“zrw” , “Rikka”);
System.out.println(s3); // mzmRikka分割字符串 // 方法
public String[] split(String regex, int limit)
// regex 指定一段就好 (应该)
// limit 最大 分割 次数 为 limit – 1 也就是 limit 会限制 一个 最大 数组长度
// limit 为负数 (都多余了 爱谁谁) 次数无限
// limt 为0 String数组中 最后的 所有 空字符串(指值) 会被丢弃
String str = “boo:and:foo”;
String[] a = str.split(“:”, 2); // “boo”, “and:foo”
String[] b = str.split(“:”, 5); // “boo”, “and”, “foo”
String[] c = str.split(“:”, -2); // “boo”, “and”, “foo”
String[] d = str.split(“o”, 5); // “b”, “”, “:and:f”, “”, “”
String[] e = str.split(“o”, -2); // “b”, “”, “:and:f”, “”, “”
String[] f = str.split(“o”, 0); // “b”, “”, “:and:f”
String[] g = str.split(“m”, 0); // “boo:and:foo” - 比较字符串
- 获取字符串长度
- 大小写转换
- 查找字符串
- 截取字符串
- 去掉首尾 空格
- 替换 字符 或 字串
- 分割字符串 // 方法
public String[] split(String regex, int limit)
// regex 指定一段就好 (应该)
// limit 最大 分割 次数 为 limit – 1 也就是 limit 会限制 一个 最大 数组长度
// limit 为负数 (都多余了 爱谁谁) 次数无限
// limt 为0 String数组中 最后的 所有 空字符串(指值) 会被丢弃
String str = “boo:and:foo”;
String[] a = str.split(“:”, 2); // “boo”, “and:foo”
String[] b = str.split(“:”, 5); // “boo”, “and”, “foo”
String[] c = str.split(“:”, -2); // “boo”, “and”, “foo”
String[] d = str.split(“o”, 5); // “b”, “”, “:and:f”, “”, “”
String[] e = str.split(“o”, -2); // “b”, “”, “:and:f”, “”, “”
String[] f = str.split(“o”, 0); // “b”, “”, “:and:f”
String[] g = str.split(“m”, 0); // “boo:and:foo”