1.转义字符

  1. public class Hello {
  2. public static void main(String[] args){
  3. System.out.println("12\t3");//输出 12 3
  4. System.out.println("你好\n世界");
  5. /*
  6. 你好
  7. 世界
  8. -------------------------------
  9. \t 制表符
  10. \n 换行符
  11. \\ 一个\
  12. \" 一个"
  13. \' 一个'
  14. */
  15. System.out.println("你好\\世界");//你好\世界
  16. System.out.println("你好\"世\'界");//你好"世'界
  17. }
  18. }

2.数据类型

1byte=8bit(bit为二进制数字)
4.Java基础1 - 图1
4.Java基础1 - 图2

4.Java基础1 - 图3

  1. public class Hello {
  2. public static void main(String[] args){
  3. //测试char的特性
  4. char c1 = 'a'; //a
  5. char c2 = '\t'; //空格
  6. char c3 = '中'; //中
  7. char c4 = 97; //a 97在ASCII码表上面对应的就是小写字母a
  8. char a ;
  9. a= 'a' + 1; //b 97+1=98 98在ASCII码表上面对应的就是小写字母b
  10. System.out.println( (int)a ); //98 强转
  11. //例子:'中'转换为Unicode为\u4e2d
  12. a='\u4e2d';// 中 十六进制
  13. System.out.println(0x4e2d );//中
  14. System.out.println( a );//中
  15. System.out.println((int) a );//20013
  16. a=20013;
  17. System.out.println(a);//中
  18. }
  19. }

布尔型:Boolean a=true,b=false;

3.自动类型转换

char -> int -> long -> float -> double ;
byte -> short -> int -> long -> float -> double;
boolean不转换;
char和short、char和byte之间不进行自动转换;
byte、short、char计算时转换为int类型;
有多种数据类型混合运算的时候,会转成精度最大的那个数据类型,再进行计算;
表达式最终返回结果的类型,自动提升为操作数中精度最高的类型。

4.算术运算符

作为独立的语句使用: 前++和后++都完全等价于i=i+1;
作为表达式使用: 前++(++i)先自增后赋值,赋值是先赋值给一个临时变量;后++(i++)先赋值后自增

  1. public class Hello {
  2. public static void main(String[] args){
  3. int y=1,x=1;
  4. int c=y++;//tmp=y=1;y=y+1;c=tmp=1
  5. int d=++x;//x=x+;tmp=x;d=tmp;
  6. System.out.println(c);//1 先赋值
  7. System.out.println(d);//2 先自增
  8. }
  9. }
  10. public class Hello1 {
  11. public static void main(String[] args){
  12. int y=1,x=1;
  13. y=y++;
  14. System.out.println("y = " + y); //tmp=y;y=y+1;y=tmp;
  15. x=++x;
  16. System.out.println("x = " + x); //x=x+1;tmp=x;x=tmp;
  17. }
  18. }
  19. public class Hello {
  20. public static void main(String[] args){
  21. int x = 4;
  22. int y = (--x)+(x--)+(x*10);
  23. System.out.println(y);//26
  24. System.out.println(x);//2
  25. //y=a+b+(x*10); a=(--x);b=(x--);
  26. //x=x-1=3;tmp=x=3;a=tmp;
  27. //tmp1=x=3;x=x-1=2;b=tmp1=3;
  28. //2*10=20
  29. //y=3+3+20=26
  30. }
  31. }

5.赋值运算符

+= -= *= /= %=
a += 2; 等价于 a = a + 2;
例子1:byte b = 3; b += 4; 合法,可以看作有个强转的操作;
例子2:byte b = 3; b++; 合法,同上;

6.逻辑运算符(部分)

短路与&&:一假全假;左边为假,右边就不运算
短路或||:一真全真;左边为真,右边就不运算
取反!:!(false) =true
逻辑与&:一假全假;不管真假两边都运算
逻辑或|:一真全真;不管真假两边都运算
逻辑异或^ :a^b: 当a和b不同时,则结果为true,否则为false

7.三元运算符

变量 = (条件表达式) ? 表达式1 : 表达式2;
当 条件表达式=true时: 变量 = 表达式1;
当 条件表达式=false时:变量 = 表达式2;

  1. public class Hello {
  2. public static void main(String[] args){
  3. //求三个数中的最大数max;
  4. int a=100,b=200,c=300,max=0;
  5. int result=0;
  6. max=a>b?a:b;
  7. result=result > c ? result : c;
  8. System.out.println(result);//300
  9. }
  10. }

8.进制与位运算符

  1. public class Hello {
  2. public static void main(String[] args){
  3. //右移运算符demo
  4. System.out.println(10>>1);//5 // 10 的二进制 为0000 1010 ;右移一位变为 0000 0101 =5;
  5. }
  6. }

位运算符: & | ^ ~ << >> >>>

9.进制转换

十进制:0-9
二进制:0和1,0b或者0B开头
八进制:0-7,0开头
十六进制:0-9abcdef,0x或者0X开头
——————————————————————————-
十进制转十六进制 : 将该数不断除以16,直到商为0,每步得到的余数倒过来,就是对应的十六进制。
十进制的10转为十六进制为64。
100/16=6——4
6/16=0——6
——————————————————————————-
二进制转十六进制:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。
0 1 0 0 1 0 0 1 =(08+14+02+01)(18+04+02+11)=49(十六进制)
——————————————————————————-
Hex编码(十六进制编码)

  1. import com.sun.org.apache.xerces.internal.impl.dv.util.HexBin;
  2. import java.security.MessageDigest;
  3. public class Hello {
  4. public static void main(String[] args){
  5. try {
  6. MessageDigest md5 = MessageDigest.getInstance("MD5");
  7. md5.update("a12345678".getBytes());
  8. byte[] digest= md5.digest();
  9. for (int i = 0; i < digest.length; i++) {
  10. System.out.println(digest[i]);
  11. }
  12. //{-23,-68,14,19,-88,-95,108,-69,7,-79,117,-39,42,17,49,38};
  13. //byte 数组,一个byte=8bit; 根据二进制转为十六进制,0000 0001 =01 例子来看,md5后hex编码结果,每两位等于一个byte
  14. //加密结果中的每个字母数字,等于四个比特位
  15. System.out.println(HexBin.encode(digest));// E9 BC 0E 13 A8 A1 6C BB 07 B1 75 D9 2A1 1 31 26
  16. } catch (Exception e) {}}}

10.switch语句

  1. public class Hello {
  2. public static void main(String[] args){
  3. int x = 5;
  4. switch(x){
  5. case 5:
  6. System.out.println("case 5");
  7. case 2:
  8. System.out.println("case 2");
  9. break;
  10. case 8:
  11. System.out.println("case 8");
  12. case 3:
  13. case 4:
  14. System.out.println("春季");
  15. break;
  16. }
  17. //switch是从上往下挨个判断的,如果没加“break”,则会自上而下挨个执行,直到break出现才跳出switch语句。
  18. //以上结果输出 case 5 case 2
  19. }}

11.break与continue

  1. public class Hello {
  2. public static void main(String[] args){
  3. abc:
  4. for (int a = 0; a < 3; a++) {
  5. bcd:
  6. for (int i = 0; i < 22; i++) {
  7. if (i==2){
  8. continue bcd;
  9. //break; 后面不加默认代表 break bcd;
  10. //continue abc;代表结束内部循环;
  11. //continue bcd; 和continue; 效果一样
  12. };
  13. System.out.println("==================");
  14. System.out.println(i);
  15. }
  16. }
  17. }}

常见的循环控制方法:
break 跳出循环;
continue 到循环尾;
return 跳出所在的方法,如果return写在main方法中,则退出程序。

12.数组

概念:数组是多个相同类型数据的组合,实现对这些数据的统一管理。
动态初始化:元素类型[] 数组名 = new 元素类型[数组长度]; int[] arr = new int[5];
静态初始化:元素类型[] 数组名 = new 元素类型[]{元素,元素,…};int[] arr = new int[]{1,2,3,4,5};

  1. public class Hello {
  2. public static void main(String[] args){
  3. int [] aaa=new int[5];//动态初始化
  4. int[]bbb={2,3,3,3,6};//第一种 静态初始化
  5. int bbb1[]={2,3,3,3,6};//第二种 静态初始化
  6. int bbb2[]=new int[]{2,3,3,3,6};//第三种 静态初始化
  7. int[] bbb3=new int[]{2,3,3,3,6};//第四种 静态初始化
  8. }}

求int数组中的最大数:

  1. public class Hello {
  2. public static void main(String[] args){
  3. int [] aaa=new int[5];//求数组中最大数
  4. aaa[0]=0;
  5. aaa[1]=1;
  6. aaa[2]=2;
  7. aaa[3]=3;
  8. aaa[4]=4;
  9. int max=1;
  10. for (int i = 0; i < aaa.length; i++) {
  11. if (max<aaa[i]){max=aaa[i];};}
  12. System.out.println(max);//4
  13. }}

数组扩容原理:新创建一个数组,把旧数组内容拷贝到新数组里面(for循环)可实现扩容;
数组是引用类型,如果两个数组简单的复制,即arr1=arr;改变arr1的内容,arr也会随之改变;

二维数组: int[][] arr = new int[2][3]; arr[0][1] = 78;
二维数组的遍历:

  1. public class Hello {
  2. public static void main(String[] args){
  3. int[][]arr={{1,2},{3,4},{5,6},{7,8}};
  4. for (int i = 0; i < arr.length; i++) {
  5. for (int j = 0; j < arr[i].length; j++) {
  6. System.out.println(arr[i][j]);
  7. }}
  8. }}
  9. /* 几种定义方式 int[] x; int x[];
  10. int[][] y; int y[][]; int[] y[];
  11. int[] x,y[]; //定义两个数组,x是一维的,y是二维的
  12. */

十进制转十六进制代码实现:

  1. public class Hello {
  2. public static void main(String[] args){
  3. StringBuffer stringBuffer = new StringBuffer();
  4. char []chars = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  5. int num=31;
  6. while (num>0){
  7. int index= num % 16;//取余
  8. char tmp = chars[index];//取出对应的十六进制的数值
  9. stringBuffer.append(tmp);
  10. num=num/16;
  11. }
  12. System.out.println(stringBuffer.reverse().toString());
  13. }}
  14. //初识stringBuffer
  15. //数组的灵活使用

13.Java帮助文档

Java API中文文档 https://www.matools.com/
Java API的查看方式
image.png