常用储存单位:
1B(字节)=8bit
1KB=1024B
1MB=1024KB
1PB=1024TB
常见命名约定:
小驼峰命名法:(方法、变量)
- 约定1:标识符是一个单词的时候,首字母小写
- exp1:name
- 约定2:标识符是由多个单词组成的时候,第一个单词首字母小写,其他单词首字母大写
- exp2:firstName
大驼峰命名法:(类)
- 约定1:标识符是一个单词的时候,首字母大写
- exp1:Students
- 约定2:标识符是由多个单词组成的时候,每个单词首字母大写
- exp2:GoodStudents
java的基本数据类型:
整型:byte short int long 空间大小依次为:(1 2 4 8)字节 常用int 使用long初始化时要在值后加L exp:long a = 5000L
浮点型:单精度float 双精度double 空间大小依次为:(4 8)字节 常用double 使用float初始化时要在值后加F exp:float a = 11.2F
字符型:char 空间大小为:2字节
布尔型:boolean 空间大小为:1字节
类型转换:
隐式转换:
-
小的数据类型和大的数据类型运算,小的会先提升为大的再进行运算
-
特殊关注:byte short char 三种数据在运算时,不管是否有更高的数据类型,都会提升为int再进行运算
-
-
exp:
byte a = 10; byte b = 20; int c = a+b; //需要用int接收
-
强制类型转换:
double a = 10.5;
int b = (int)a; //b=10
数值拆分:
- 个位:num%10
- 十位:num/10%10
- 百位:num/10/10%10
- 千位:num/10/10/10%10
自增自减运算符:
++a:
先进行a的自增,再使用a参与操作
a++:
先使用a参与操作,再进行a的自增
int a = 10;
int b = ++a;
System.out.println(a); //a=11
System.out.println(b); //b=11
a = 10;
int c = a++;
System.out.println(a); //a=11
System.out.println(c); //c=10
System.out.println(c++); //res=10 c先操作,然后自增,c=11
System.out.println(++c); //res=12 c=12
赋值运算符:
注意:扩展赋值运算符底层自带强转
short a = 11;
a = (short)a+1; //不加强转会报错 因为short运算会提升为int
a+=2; //内部自带强转 a = (short)a+2
短路逻辑运算符:
&&:有短路效果,符号左边为false时,右边不执行
&:不论左边是true或者false,右边都执行
||:有短路效果,符号左边为true时,右边不执行
|:不论左边是true或者false,右边都执行
位运算符
位运算就是把两个数转成二进制,使用不同规则进行运算
&位与:遇0则0
|位或:遇1则1
^位异或:相同为0,不同为1 ps:一个数被另一个数异或两次,该数本身不变
~取反:全部取反,0变1,1变0(包括符号位)
<< 有符号左移运算符,二进制位向左移动,左边符号位丢弃,右边补0 exp: 12<<1 ans=24
>>有符号右移运算符,二进制位向右移动,左边使用符号位补位 exp: 12>>1 ans=6 -12>>1 ans=-6
>>>无符号右移运算符,无论符号位是0还是1,都补0 exp: -12>>>1 ans=2147483642
三元运算符:
格式:关系表达式?表达式1:表达式2
执行流程:
- 先计算关系表达式的值
- 如果值为true,取表达式1的值
- 如果值为false,取表达式2的值
break跳出指定循环:
标号名:while(true){
switch(表达式){
case 1:
break 标号名; //此处的break,可以直接跳出while循环
}
}
IntelliJ IDEA快捷键
- psvm+回车:快速生成main方法
- sout+回车:快速生成输出语句
- alt+1:打开/隐藏 工程目录
- alt+4:打开/隐藏 控制台
- ctrl+alt+l:格式化代码
- alt+enter:代码修正提示
- ctrl+d:向下复制一行
- alt+shift+↑:上移当前行
- alt+shift+↓:下移当前行
- ctrl+alt+v:快速生成方法的返回值
Java中的内存分配
栈内存:方法运行时,进入的内存,局部变量都存放在栈内存
堆内存:new出来的内容都会进入堆内存,并且会存在地址值
方法区:字节码文件(.class)加载时进入的内存
本地方法栈:调用操作系统相关资源
寄存器:交给cpu去使用
public class Demo1{
public static void main(String[] args){
int[] arr = new int[3];
System.out.println(arr[0]);
}
}
以上代码的调用流程为:
- Demo1类的字节码文件加载进方法区
- main方法被jvm自动调用进入栈内存执行
- arr数组变量在main方法中声明(int[] arr)
- 通过new关键字在堆内存中开辟内存空间并产生地址值(new int[3])
- 将地址值赋予main方法中的arr变量
方法重载
同一个类中,方法名相同,参数不同的方法。(参数不同:个数不同、类型不同、顺序不同[不建议])
注意:识别方法之间是否是重载关系,只看方法名和参数,和返回值无关。
引用数据类型
方法参数传递为引用数据类型时,传入方法中的,是内存地址 。
exp: int[] arr
进制转换
十进制转任意进制
公式:除基取余
使用源数据,不断除以基数(目标是几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼起来即可。
二进制快速转八进制、十六进制
转八进制:将三个二进制位看为一组,再进行转换(参照8421表) exp: 0b111100->074
转十六进制:将四个二进制位看为一组,再进行转换(参照8421表) exp:0b111100->0x3c
原码反码补码
原码:看数据
最高位为符号位,【0】表示正,【1】表示负。
反码:转数据
正数的反码与其原码相同;负数的反码市对其原码逐位取反,符号位除外
补码:运算数据
正数的补码与其原码相同;负数的补码是在其反码的末位加1