① Java编译
1.1 java
// 注释(单行) 解释、说明、不执行
/*-----*/ 多行注释
/** 可以用于文档化处理的单行或多行注释 */
Class 关键字:声明一个类
1、Java程序所在文件后缀为 .java
2、Java程序应写在‘类’中
3、Java程序运行应当有main方法
4、编译指令javac与运行指令 .java
5、Java程序特性:一次编译 到处运行
Class First{ //一个类要执行,必须有main方法作为程序的入口 public static void main(String [] args){ //在控制台输入语句First System.out.println(“This is my first java!!!”); } }
1.2 GC垃圾回收机制
垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身
//引用级别---地址 ---对象 强 软 弱 虚
public class Person { String name; public Person(String name) { super(); this.name = name; } //析构方法 ----Object 当对象被回收的时候自动执行的方法 @Override protected void finalize() throws Throwable { super.finalize(); System.out.println("我被回收啦!!!!"+" "+name); } } public class Test { public void go(){ Person per=new Person("我很强!"); new Person("我很虚1"); new Person("我很虚2"); new Person("我很虚3"); } public static void main(String[]args) throws InterruptedException { new Test().go(); //申请垃圾回收---单独在一个子线程运行的 //只是申请垃圾回收,而不是马上执行垃圾回收 //立刻,马上,可控的垃圾回收,都是错误的 System.gc(); } }
② 变量
2.1 数据类型
public class demo { public static void main(String[]args) { //变量 int num1=123; byte num2=33; short num3=44; long num4=123l; float f1=123.456789f; double d1=234.23456789; char c1='A'; char c1='+'; char c1='%'; char c1='2'; char c1='中'; boolean b1=true; boolean b2=false; } }
2.2 进制
二进制 0 1
十进制 0-9
八进制 0-7
十六进制 0-9 AB C D E F F+1=10
进制的转换:
十进制-->二进制:除2求余 倒过来写 13 1101
二进制-->十进制: 第一位认为是2的0次方,依次累加
八进制-->二进制: 一位变三位
二进制-->八进制: 三位一取
十六进制-->二进制: 一位变4位
二进制-->十六进制: 4位一取
八进制--->十六进制 先转换成二进制,转换成十六进制
十进制<-->八进制
十进制<-->十六进制
原码 13 -13
0000 1101
反码
1111 0010
补码 :计算机中存储数据都是存储补码形式
正数:原码
负数: 绝对值 二进制 按位取反 加 1
0000 1101
1111 0010
1111 0011
最高位:0正数 1负数 符号位
-------------------------------
1111 0011
1111 0010
0000 1101
13
2.3 变量转换
1、自动转换型:容量小——>容量大
2、强制转型:容量大——>容量小 加强制符 (会造成精度降低或数据溢出)
强制符:(转换目标)
int num = 69;
char c1 = (char) num;
2.4 标识符命名规则
1、由字母、数字、下划线(_)、美元符号($)组成
2、不能以数字开头
3、区分大小写
4、长度无限制
5、不能是java中的保留关键字
命名习惯:见名识意
2.5 转义字符
1、特殊意义
\n 换行
\r 光标回至首位,输入的内容替换后面的
\t 水平制表 相当于(Tab)键
2、避免混淆
单引号 双引号 \
\‘ 产生一个单引号
\ “ 产生一个双引号
\\ 产生一个斜杠
拼接用 “+”
2.6 算数运算符
1、 byte、short做运算,结果将是int
+ - * / %(取余数:模) + +(自加1) - -(自减1)
2、 a+b 操作数 运算符 表达式
当+ +放在操作数后面时,为后缀存在时,整个自增表达式的值取当前操 作数的值,然后再自增1(操作数的值)
C++ / ++C
C++: 自增运算在变量C被本次使用后再进行
即先对C操作后再++
++C: 首先对变量C进行自增运算,然后变量C才被本次表达式使用
public class demo1 { public static void main(String[] args) { int a = 10; int b = 10; int m = a++ + ++a - --b - a++ ; int n = b++ - ++b + a++ + a-- ; System.out.println(a); System.out.println(b); System.out.println(m); System.out.println(n); } }
2.7 赋值运算符
= 赋值
+ = a+=b---> a=a+b
- = a-=b---> a=a-b
* = a*=b---> a=a*b num*=6.0 - -> num=(int)(num*6.0)
/ = a/=b---> a=a/b
% = a%=b---> a=a%b
2.8 关系运算符
= = 4==3---> false
!= 4!=3---> true
<
>
< =
> =
Boolean 只能比较相等/不等 不能比较大小
2.9 逻辑运算符
& 与 false & true false
| 或 false| true true
ˆ 亦或 true ˆ false true
! 非 !true false
(且) && 短路与 false && true false
|| 短路或 false || true true
在计算机中1为真,实际是只要非0即真,0为假
逻辑或-------------------一真才真
逻辑与-------------------一假则假
逻辑亦或------------------不一样为true 一样为false
(优先级)非 > 与 >或
三目运算符
X ? Y : Z
X为true 输出Y,否则输出Z
移位运算符
<<
左移在变大 变大2的移位次方
最快速度算出2乘以8 2<<3
23 1<<3
③ 表达式和语句
3.1 if语句
if(条件语句){…………}
if(条件语句){…………}else{…………}
if(条件语句){…………}else if{条件语句}{…………}
if(条件语句){…………}else if{条件语句}{…………}else{…………}
3.2 switch语句
switch (表达式) {
case 取值1:
语句块1
break;
case 取值2:
语句块2
break;
case 取值3:
语句块3
break;
default:
break;
}
表达式必须是:int byte char short 枚举 字符串
3.3 循环语句
1、while语句
while(条件表达式){
语句块;
}
2、do-while 语句
do{
循环操作;
}while(循环条件);
3、for 循环
for (初始化参数;判断条件;更新循环变量){
循环体;
}
4、while(true)语句
while(true){
语句块;
}
break;
无限死循环语句块直到中断产生
5、递归
方法中调用自己的方法
break :
终止当前整个循环的执行
还可以用在switch语句中
return :
返回一个值
代码执行到此处终止
continue :
跳出本次循环,直接进入下次循环
④ 算法
4.1 一维数组
静态初始化
int [] as = {1,2,3,4,5};
动态初始化
1、
int [] as = new int[5];
as[0] = 1;
as[1] = 2;
as[2] = 3;
2、
int [] as = new int[5]{5,4,3,2,1};
角标最大取到数组大小-1(as.length)从0开始 // .length属性
数组:
容器类型,可以放好多个值
特点:
1、类型确定
2、大小确定
4.2 数组的遍历
1、for循环
for(int i=0;i
2、增强for循环
for(int num:nums){
System.out.println(num);
}
4.3 二维数组
int [] [] nums = {{1,2,3},{4,5,6}};
遍历 :
for (int [] num:nums){
for (int n:num){
System.out.println(n);
}
}