• 三、java 基础提炼


    一、标识符:凡是自己命名的都是标识符

    标识符的定义规则:

    •  由26个字母大小写,0-9,_或$组成;
    • 数字不能开头;
    • 不可以用用关键字、保留字,但可以包含关键字和保留字;
    • java严格区分大小写;
    • 标识符不能包含空格.

    java中名称的命名规范:

    • 包名:多单词组成时,所有字母都小写xxxyyy;类名、接口:多单词组成时,所有单词首字母大写:XxxYyy;
    • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz;
    • 常量名:所有字母大写,多单词时,每个单词用下划线连接;XXX_YYY_ZZ;

     二、计算机中的进制:

     1 public static void testBinerary() {
     2         int num1 = 0b110;
     3         int num2 = 110;
     4         int num3 = 0127;
     5         int num4 = 0x110A;
     6         System.out.println("num1="+num1);//打印出来的都是10进制
     7         System.out.println("num2="+num2);
     8         System.out.println("num3="+num3);
     9         System.out.println("num4="+num4);
    10         //自动转换
    11         int i= 60;
    12         String s1 = Integer.toHexString(i);    
    13         String s2 = Integer.toBinaryString(i);
    14         System.out.println(s1+","+s2);
    15                 
    16     }
    View Code

    三、变量:内存中的一个存储区块,用于内存中保存数据,包含变量类型 变量名 和存储值。

    1.  java中每个变量需要先明,后使用(变量在方法内声明,必须赋值(初始化)才能使用;在类中声明,会带默认值);
    2.  使用变量访问区块数据;
    3.  变量只有在共有作用域中才有效;
    4.  同一个作用域内不能定义重名的变量;

    java中的数据类型:

    1. 基本数据类型:byte short int long float double char boolean
    2. 引用数据类型:类 接口 数组

    变量的使用:

     1 /**
     2      *整型变量的使用;
     3      *byte = 8bit 可以表示2^8个数 -128 ~127;1字节</br> 
     4      *short 可以表示2^16个数;2字节</br>  
     5      *int 可以表示2^32个数;4个字节</br> 
     6      *long 可以表示2^64个数 8个字节,必须以大写的L/l的结尾;
     7      */
     8     public void testInteger() {
     9         //byte 的范围 -128 ~127
    10         byte b1 = 1;
    11         byte b2 = 127;
    12         //long变量 必须以大写的L/l的结尾
    13         long l = 34444444444L;
    14     }
    15     
    16     /**
    17      *浮点型(带小数点的): 
    18      * float:4字节 7位有效数字
    19      * double:8字节
    20      */
    21     public void testFloat() {
    22         double d1 = 123.1;
    23         System.out.println(d1+1);
    24         //float 定义 后面加f/F结尾
    25         float f1 = 123.1f;
    26         System.out.println(f1);
    27     }
    28     /**
    29      *字符型:
    30      *
    31      *<p>1个字符 = 2字节</br>
    32      * 声明char 变量,通常使用单引号</br>
    33      * 允许使用转义符‘’ 来将其后的字符转变为特殊字符型常量;如
    '表示回车</br>
    34      * 直接使用Unicode值来表示字符常量 \uXXXX 其中 XXXX代表一个十六进制整数</br>
    35      * </br>
    36      */
    37     public static void testChar() {
    38         //''里面只有写一个字符
    39         char a = 'a';
    40         System.out.println(a);
    41         //转义字符
    42         char c1 = '
    ';//回车
    43         char c2 = '	';//制表符
    44         char c3 = 97;//十进制的a
    45         char c4 = 'u0061';//16进制a
    46         char c5 = 'u34c7';//
    47         System.out.println("a"+c1);
    48         System.out.println("hello"+c2+"world");
    49         System.out.println(c3);//对应ASC码
    50         System.out.println(c4);
    51         System.out.println(c5);
    52     }
    53     
    54     /**
    55      *boolean:只能取两个值之一:true false
    56      *<p>常在判断 or 循环结构中使用
    57      */
    58     public void testBoolean(){
    59         boolean bb1 = true;
    60         System.out.println(bb1);
    61         
    62     }
    View Code

    基本本数据类型之间的运算规则 (这里讨论的基本数据运算,不包含Boolean)

     1.自动提升:小的范围 和 大范围的做运算时 用大范围的数据类型来接收:

      byte、short、char --> int --> long-->float --> double <br>
      byte short char 之间做运算或者跟跟自身做运算 ,都需要用int接收
     2.强制类型转换:自动类型提升的逆运算;可能会导致精度损失
       需要使用强转符:()
    3.整型常量 默认是int 浮点型常量默认是 double;

     1 /**
     2  * 自动类型提升
     3  */
     4     public static void testOperation() {
     5         byte b1 = 2;
     6         int i1 = 3;
     7         int res = b1 + i1;
     8         char c1 = 97;
     9         short s = 1;
    10         // char res2 = c1 +s; //char + short 运算
    11         // res2 = b1 +c1;//char + byte 运算
    12         // char res2 = b1 +s;//short + byte 运算
    13         System.out.println(res);
    14     }
    15     /**
    16      *强制类型转换 
    17      */
    18     public static void testConversion() {
    19         double d1 = 12.3;
    20         int i = (int)d1;
    21         System.out.println(i);
    22     }
    23     
    24     /**
    25      *整型常量 默认是int 浮点型常量默认是 double; 
    26      * 
    27      */
    28     public static void testSpecial() {
    29         byte b1 = 12;
    30         //byte res = b1+1;//报错:1是int ,所以这里需要用int接收
    31         float f = 1.1f;
    32         //float res2 = f+1.2;//报错:1.2默认是double,double的范围比float大不能自动类型提升;         
    33     }
    View Code

      String类型变量的使用

    1. String属于引用数据类型;(其他的引用数据类型有 类 和接口 数组)
    2. 声明String类型变量时,使用“”;
    3. String 可以和8中数据类型做运算,运算只能是连接运算,运算的结果是String类型;
     1 public static void testOperation() {
     2         boolean b = true;
     3         String s = "s";
     4         System.out.println(s+b);//这里的“+”是连接运算;
     5         char c='a';
     6         int num = 100;
     7         String str = "hello";
     8         System.out.println(c+num+str);//c+num 是加法运算,后面是连接运算
     9         System.out.println(c+str+num);//c+str 是连接运算,后面是连接运算
    10         System.out.println(c+(num+str));//(num+str)连接,都是连接
    11         System.out.println((c+num)+str);//c+num 是加法运算,后面是连接运算
    12         System.out.println(str+c+num);//都是连接
    13         System.out.println("*"+"	"+"*");
    14         System.out.println("*"+("	"+"*"));
    15         System.out.println('*'+'	'+"*");
    16         System.out.println('*'+('	'+"*"));
    17         //String strw = 123;//声明String类型变量时,使用“”
    18         String str1 =  123+"";
    19         //int num1 = (int)str1;//不能强转int Integer.parseint(str1)
    20     }
    View Code

    四、运算:

    算术运算符( + - * / % ++ -- ....)

     1 public static void testAri() {
     2         //除法
     3         int num1 = 12;
     4         int num2 = 5;
     5         System.out.println(num1/5);
     6         double d1 = 12;
     7         double d2 = 5;
     8         double res = d1/d2;
     9         double res1 = num1/num2+0.0;
    10         double res2 = (0.0+num1)/num2;
    11         System.out.println("res:"+res);
    12         System.out.println("res1:"+res1);
    13         System.out.println("res2:"+res2);
    14         
    15         //++运算,前++,先自增,再运算;后++,先运算后自增1;
    16         int a1 = 10;
    17         int b1 = ++a1;
    18         System.out.println("a1:"+a1+",b1:"+b1);
    19         
    20         int a2 = 10;
    21         int b2 = a2++;
    22         System.out.println("a2:"+a2+",b2:"+b2);
    23         
    24         short s1 = 10;
    25         s1++; //s1 = (short)(s1+1);++不会改变自身数据类型
    26         
    27         byte bb1 = 127;
    28         bb1++;
    29         System.out.println("bb1:"+bb1);
    30         
    31         
    32         //取余,结果的符号与被摩数的符号一样
    33         int m1 = 12;//被模数
    34         int n1 = 5;//模数
    35         System.out.println("m1 % n1 = "+ m1%n1);
    36         
    37         int m2 = -12;//被模数
    38         int n2 = 5;//模数
    39         System.out.println("m2 % n2 = "+ m2%n2);
    40         
    41         int m3 = -12;//被模数
    42         int n3 = -5;//模数
    43         System.out.println("m3 % n3 = "+ m3%n3);
    44         
    45         int m4 = 12;//被模数
    46         int n4 = -5;//模数
    47         System.out.println("m4 % n4 = "+ m4%n4);
    48     }
    View Code

    tips:前++ 和 后++ 的具体区别,可以查看:https://www.cnblogs.com/lixiuming521125/p/10865392.html

     
    赋值运算:=
    +=,-+,/+,%=

     1 public static void testSetValue() {
     2         //赋值符号
     3         int i1 = 10;
     4         int j1 = 10;
     5         
     6         //连接赋值;
     7         int i2,j2;
     8         i2= j2 =10;
     9         
    10         int i3,j3 =20;
    11                 
    12         int num1 =10;
    13         num1 +=2;//num1 = num1+2
    14         System.out.println(num1);
    15         
    16         short s1 = 10;
    17         s1+=2;//+= 不能改变变量的数据类型
    18         System.out.println(s1);
    19         
    20         int i = 1;
    21         i *= 0.1;
    22         System.out.println("i:"+i);//i=0
    23         
    24         int m = 2;
    25         int n = 3;
    26         n *= m++;
    27         System.out.println("m:"+m);
    28         System.out.println("n:"+n);
    29         
    30         int nn = 10;
    31         nn += nn++ +(++nn);// nn =  nn+(nn++ +(++nn))
    32         System.out.println(nn);
    33         
    34         
    35     }
    View Code

    比较运算: == != < > <= >=

    1. 比较运算的结果是boolean类型;只能是true or false; 
    2. < > <= >=:只能使用在数值类型的数据之间;
    3. ==:不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间;

    逻辑运算:只能适用于boolean的变量 (相关扩展:https://www.cnblogs.com/lixiuming521125/p/12053966.html

     1 public static void testLogic() {
     2         //区分& 和 &&
     3         //相同点:& 和 && 的运算结果相同;当符号左边是true时,二者都会执行右边运算;
     4         //不同点:当符号左边是false是,& 还是执行右边运算, && 不执行;
     5         boolean b1 = false;
     6         int num1 = 10;
     7         if(b1 &(num1 ++>0)) {
     8             System.out.println("if");
     9             
    10         }else {
    11             System.out.println("else");
    12         }
    13         System.out.println(num1);
    14         int num2 = 10;
    15         if(b1 &&(num2 ++>0)) {
    16             System.out.println("if");
    17             
    18         }else {
    19             System.out.println("else");
    20         }
    21         System.out.println(num2);
    22         
    23         // 区分: | 和 ||
    24         //相同点:| 和 || 的运算结果相同;当符号左边是false时,二者都会执行右边运算;
    25         //不同点:当符号左边是true是,| 还是执行右边运算, || 不执行;
    26         boolean b2 = true;
    27         int num3 = 10;
    28         if(b2 |(num3 ++>0)) {
    29             System.out.println("if");
    30             
    31         }else {
    32             System.out.println("else");
    33         }
    34         System.out.println(num3);
    35         int num4 = 10;
    36         if(b2 ||(num4 ++>0)) {
    37             System.out.println("if");
    38             
    39         }else {
    40             System.out.println("else");
    41         }
    42         System.out.println(num4);
    43     }
    44     
    View Code

    位运算:操作的是整型的数据

    1.  x<<n  x*2^n   
    2.  x>>n  x*2^-n       
    3.  >>> 无符号右移:   
    4.  &:与               
    5.  |:或              
    6.  ^:异或           

     面试题:最高效的计算 2*8 2<<3

     1 public static void testBitAri() {
     2         int i = 21;
     3         System.out.println("i<<2:"+(i<<2));//21*2^2
     4         System.out.println("i>>:"+(i>>2));
     5         
     6         int m = 12;
     7         int n = 5;
     8         System.out.println("m&n:"+(m&n));
     9         System.out.println("m|n:"+(m|n));
    10         System.out.println("m|n:"+(m^n));
    11         
    12         //交换两个变量的方式
    13         //方式一:
    14         int num1 = 10;
    15         int num2 = 20;
    16         int temp = num1;
    17         num1 = num2 ;
    18         num2 = temp;
    19         System.out.println("num1:"+num1+",num2:"+num2);
    20         //方式二:
    21         num1 = num1+num2;
    22         num2 = num1-num2;
    23         num1 = num1-num2;
    24         System.out.println("num1:"+num1+",num2:"+num2);
    25         //方式三: m =(m^n)^n
    26         
    27         num1 = num1^num2;
    28         num2 = num1^num2;
    29         num1 = num1^num2;
    30         System.out.println("num1:"+num1+",num2:"+num2);
    31     }
    View Code

    三元运算符:(表达式)? 表达式一:表达式二

    1. 条件表达式的结果是boolean类型;
    2. 根据条件表达式的结果,决定执行表达式一or 二; true:表达式一,否则:表达式二
    3. 表达式一 和表达式二 要求是一直的;
    4. 凡是使用3元运算符的,都可以改写成 if else;反之 不成立
    5. 如果既可以使用三元运算符,又可以用if else ,就使用 三元运算符,因为运行效率高
     1 public static void testThreeAri() {
     2         //获取两个数的较大值
     3         int m= 12;
     4         int n = 5;
     5         int max = m>n?m:n;
     6         String res = m>n?"m 大":(m==n?"相等":"n大");
     7         System.out.println(max);
     8         System.out.println(res);
     9         
    10         if(m>n) {
    11             System.out.println("m大");
    12         }else {
    13             
    14             
    15         }
    16     }
    View Code

     

    五、流程控制:

    分支结构:1.if else 

     
    if(条件表达式){

    }


     if(条件表达式){
    }else{

     }

    if(条件表达式){
    }else if{
    }....
     else{

    }

    分支结构:2.switch case

    switch("表达式"){
          case 常量一:
          执行语句
         ///break;
         case 常量二:
         执行语句;
     ///break;    
          ...
          default:
          执行语句;
      }

     switch(表达式) 这个表达式只能是如下6种数据类型: byte short int char int 枚举 String
     case后只能加常量;
     break 关键字是可选的;
     default:相当于if-else 中的else default是可选的;而且位置是可变的(比如:default可以放在第一个case之前);
     说明:如果switch中的多个case的执行语句相同,则可以考虑合并;

     1 public static void testSwitchCase() {
     2     int num = 4;
     3     switch (num) {
     4     case 1:
     5         System.out.println("one");
     6         break;
     7     case 2:
     8         System.out.println("two");
     9         break;
    10     case 3:
    11         System.out.println("three");
    12         break;
    13         default:
    14             System.out.println("其他");
    15     }
    16     
    17     //case 0 到case5 合并了;()
    18     int score  = 78;
    19     switch (score/10) {
    20     case 0:
    21     case 1:
    22     case 2:
    23     case 3:
    24     case 4:
    25     case 5:
    26         System.out.println("不合格!");
    27         break;
    28     case 6:
    29     case 7:
    30     case 8:
    31     case 9:
    32     case 10:
    33         System.out.println("合格!");
    34         break;
    35     
    36     }
    37     
    38 }
    View Code

    for 循环
    循环结构的4个要素:
      1.初始化条件;
     2.循环条件(boolean);
     3.循环体;
     4.迭代条件


     for循环的结构
          for(1;2;4){
              3
          }
     for 的无限循环: for(;;)

     1 public static void testFor() {
     2         Scanner scanner = new Scanner(System.in);
     3         System.out.println("请输入第一个数:");
     4         int num1 = scanner.nextInt();
     5         System.out.println("请输入第二个数:");
     6         int num2 = scanner.nextInt();
     7         int min  = num1>num2?num2:num1;
     8         int max  = num1>num2?num1:num2;
     9         for(int i=min;i>=1;i--) {
    10             if(num1%i ==0 && num2%i == 0) {
    11                 System.out.println("他们之间的最大公约数是:"+i);
    12                 break;
    13             }
    14         }
    15         for(int i=max;i<=(min*max);i++){
    16             if(i%min ==0 && i%max==0) {
    17                 System.out.println("他们之间最小公倍数是:"+i);
    18                 break;
    19             }
    20         }
    21     }
    View Code

    while 循环
    循环结构的4个要素:
     1.初始化条件;
     2.循环条件(boolean)
     3.循环体
     4.迭代条件
     
    while循环的结构
           1
           while(2){
               3
               4
          }
     while 无限循环 : while(true)
     for循环和while循环可以相互转换

    1     public static void testWhile() {
    2         int i=1;
    3         while(i<=100) {
    4             if(i%2==0) {
    5                 System.out.println(i);
    6             }
    7             i++;
    8         }
    9     }
    View Code

    do while 循环:
    循环结构的4个要素:
     1.初始化条件;
     2.循环条件(boolean)
     3.循环体
     4.迭代条件
     
       1
       do({
           3;
           4;
       }while(2)
     
      do while至少会执行一次循环体

     1 public static void testDoWhile() {
     2         int i=1;
     3         do {
     4             if(i%2==0) {
     5                 System.out.println(i);
     6             }
     7             i++;
     8         }while(i<=100);
     9                 
    10         
    11     }
    View Code

    break和continue    关键字的使用
    break:switch- case  ;循环结构中使用(结束当前循环)
    continue: 循环结构中使用(结束当次循环)
    关键字后面不能有执行语句;

     1 public static void testBreakContinue() {
     2         for(int i=1;i<10;i++) {
     3             if(i % 4 ==0) {
     4                 System.out.println(i);
     5                 //break; 1,2,3
     6                 //continue  1 2 3 5 6 7 9
     7             }
     8         }        
     9     }
    10     
    11     public static void testBreakContinue1() {
    12         label:for(int i=1;i<4;i++) {
    13             for(int j=1;j<10;j++) {
    14                 if( j%4 ==0) {
    15                     //break;//结束当前for循环
    16                     //break label;//结束标识的层的循环
    17                     continue label;//结束指定标识的一层循环结构;
    18                 }
    19                 System.out.println(j);
    20             }
    21         }        
    22     }
    View Code

    for-for 循环 9 9 乘法表 ,100以内质数...

     1 public static void testForFor1() {
     2         for(int i=1;i<=5;i++) {
     3             for(int j=1;j<=i;j++) {
     4                 System.out.print("*");
     5             }
     6             System.out.print("
    ");
     7         }
     8         
     9         
    10     }
    11     //9 9 乘法表
    12     public static void testForFor2() {
    13         for(int i=1;i<=9;i++) {
    14             for(int j=1;j<=i;j++) {
    15                 System.out.print(i+"*"+j+"="+i*j+"    ");
    16             }
    17             System.out.print("
    ");
    18         }        
    19     }
    20     
    21     public static void testForFor() {
    22         for(int i=2;i<=100;i++) {
    23             boolean flag = false;
    24             for(int j=2;j<i;j++) {//普通算法  高级算法:for(int j=2;j<=Mth.sqrt(i);j++);
    25                 if(i % j == 0 ) {
    26                     flag = true;
    27                     break;
    28                 }
    29             }
    30             if(!flag) {
    31                 System.out.println("100以内的质数:"+i);
    32             }
    33             
    34         }        
    35     }
    36     
    37     public static void testForFor3() {
    38         label:for(int i=2;i<=100;i++) {
    39             for(int j=2;j<i;j++) {//普通算法  高级算法:for(int j=2;j<=Mth.sqrt(i);j++);
    40                 if(i % j == 0 ) {
    41                     continue label;
    42                 }
    43             }
    44                 System.out.println("100以内的质数:"+i);
    45             
    46         }        
    47     }
    View Code


  • 相关阅读:
    <二>实现用户的增删改查接口
    <十二>vueadmintemplate
    Minimal Api<五> 添加模型验证(fluentValidate)
    <一>权限表的相关设计
    <十一>请求 axios
    Minimal Api<三>创建仓储层
    Minimal Api<二>解耦api代码,统一使用服务类注入
    Minimal Api<四>修改服务层并调用仓储层实现操作数据库
    Minimal Api<一>创建项目结构和相关插件配置
    <二>基本概念
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/12882774.html
Copyright © 2020-2023  润新知