day02 Java之语言基础组成

1.关键字

- 规范:必须小写(类名首字母大写)。
- 有特别意义的标识符,诸如case,abstarct等等无须强记。

2. 标识符

-程序中自定义的有意义的名称。
-规范:26个英文字母大小写,数字0~9,符号 _ $组成;
      数字不可以开头;不可以使用关键字。
-注意:_ 连接某些名称$子名称(Demo_1$Test);
      凡是名称都是标识符。          

3.注释

-单行注释://
-多行注释:/*......*/
-文档注释:/**......*/     

-多行,文档区别:文档可以被javadoc.exe提取,生成一个说明书,把这些文档注释和源代码放在一个网页文件中,它记录了说明性文字和程序代码。

-注意:多行注释不允许多行注释;
           注释不占字节码。
           前期敲代码必须要有注释(诸如思路步骤说明等)。
-作用:注解说明;
           调试程序。

4.常量和变量

 -常量:不能改变的数值。
 -分类:整数(byte,short,int,Long),小数(float,double),布尔型(boolean),字符(char),字符串(String),null。
 -整数表现形式:二进制 0,1 
                          八进制 0~7,用0开头表示
                          十进制 0~9
                          十六进制 0~9,A~F,用0x开头表示
-进制换算
  -计数方式:8 bit(二进制位)=1 byte(最小数据单位)。
  -声明:八进制数,二进制中3个二进制位为一个八进制位;
              十六进制,二进制中4个二进制位为一个十六进制位。
  -例子:二进制-->八进制:1011=1*2^3+1*2^2+1*2^1+1*2^0
                       010-101-110 = 0256
                        2   5   6
             二进制-->十六进制:-1010-1111 = 0xAF
                               10   15
             十进制-->二进制:除2运算,6/2=3余0,
                                   3/2=1余1,从下往上
                                   1/2=0余1,6的二进制数为110.

  -负数的进制:最高位是1;该负数的绝对值的二进制取反+1;
     -举例:-6      6的二进制0000-0110(int类型8位)
                       取反1111-1001
                      +1  1111-1010(逢2进1)

-变量(未知数x)
  -定义:存放在某区域中的数据在同一类型范围内不断变化(可以重复使用)。
  -注意:变量有效范围{};初始化值。
  -格式:数据类型 变量名 = 初始化值。

  -基本数据类型:整数(byte,short,int,Long),小数(float,double),布尔型(boolean),字符(char)。
  -引用类型:类(class),接口(interface),数组(array)
  -ps:整数默认,int;小数默认:double。
  -大小位:o=8 bit;
  byte~o;short,char~oo;int,float~oooo;long,double~oooooooo.

  -类型转换
     -自动转换:低位-->高位,无风险。byte,short,char自动转成int类型。
     -强制转换:高位-->低位,精度可能损失,有风险。
   b = (byte)(b+4);//默认int类型,强转。
   System.out.println(b);    
-int与byte区别
   int x1 = Integer.MAX_VALUE;
   int x2 = 2;
   x = x1 + x2;
   System.out.println(x);//默认int类型,结果超出32位,只保留32位,高位被舍弃,最高位变为1,x=-2^32+1
   byte b =3;//默认强转(int-->byte,判断3是否在byte之内满足强转)
   b = 3 + 4;//b=7
   byte b1 = 3;
   byte b2 = 4;
   b = b1 + b2;//分析过程/*b1,b2是变量,如果b1=127,b的最高位超出报错。*/

5.运算符

-算术运算符:+,-,*,/,%,++,--,+连接符
  -/:取整(6200/1000=6)
  -%:取余,模运算(5%2=1;若x<y则x%=x;涉及负数只参考被模数,5%-2=1,-5%2=-1)
  -a++/a--:只要知道这个的原理,另外一个--a/++a正常运算正常赋值就可以了

  -举例说明:
  `int a=1;
   int b =a++;//a在前面,所以把a的值赋给b,b=1;然后a进行运算即a=a+1=2;

  -容易混淆的:
  `int i =1;             //int temp = i;
   i = i++;              //i = i+1;
   System.out.println(i);//i=temp相当于临时变量i=1`

   /*分析:首先i=1刚开始是放到a区域的,然后把第二行的i=先暂时放到b区域,接着进行运算i++知道i=2这时把a区域的1给盖掉了,此时b区域的i=1来凑热闹把a区域的2给盖掉了,最终i=1*/

-赋值运算符:= += —= *= /= %=

-面试题
short s = 3;//= 是赋值运算符
s += 3;// += 也是赋值运算符,一次运算(+=自动转换过程)
/*s = s + 3; 两次运算,不作自动转换,取2^16 -1时报错*/
s =  (short)(s+3)//可行
-比较运算符:== != > < >= <= instanceof
     -结果必须是boolean类型,true或false。

-逻辑运算符:& | ^ ! && ||(短路)
    -用于连接两个boolean类型的表达式。
    -&: 一个false,结果false;全true,结果true(唯一)。
    -|:一个true,结果true;全false,结果false(唯一)。
    -^:一个true,结果true;两边相同,结果false。(小区别)

    **-面试题**:

    &与|:无论左边运算结果是啥,右边都要参与运算。
    &&:左边为false,右边跳过。
    ||:左边为true,右边跳过。

-位运算符:<< >> >>> & | ^ ~(二进制计算)
    -& | ^:思想与逻辑运算符相同,举例:
    这里是int类型32位,为方便只写相应后三位。
    6&3-->110   6|3-->110   6^3-->110
        & 011       | 011       ^ 011
        -----       -----       -----
      2<--010     7<--111     5<--101
                                ^ 011
                                -----
                                  110-->6
    **注意**  一个数^同一个数两次结果还是这个数。
    -~(取反):正数原码、反码、补码都一样;负数原码是该数绝对值对应的二进制数且最高位+1;反码是除最高位为1外,其余取反;补码就是反码+1。

    **注意**
    取反和反码不一样,取反的过程是:原码-->反码-->补码-->取反
    (实际运用极少,仅作了解)
    -<<(左移):3<<x <=> 3*2^x(空位0补,不论正负)
     3<<2  00|000000000000000000000000000011
           000000000000000000000000000011|00-->12

    ->>(右移):6>>y <=> 6/2^y(取整)(空位根据最高位是啥补啥)
     6>>1  0000000000000000000000000000011|0
           0|0000000000000000000000000000011-->3
    ->>>(无符号右移):空位0补,不论正负。

    **面试题**
    1.最高效的2*8;(2<<3)
    2.对两个整数变量进行交换

    面试要求                                             
    int a = 5;                           ** int temp;
    int b = 3;                              temp = a;
    a = a ^ b;//a=3^5                       a = b;
    b = a ^ b;//b=(3^5)^3=5                 b = temp;**
    a = a ^ b;//a=(3^5)^5=3
    System.out.println("a="+a+",b="+b);
-三元运算符:(条件表达式)?表达式1:表达式2;
            true---->执行表达式1
            false---------->执行表达式2
举例:获取三个整数中较大的一个数
int a,b,c,temp,max;
temp = a>b?a:b;
max = temp>c?temp:c;
System.out.println(max);

6.程序流程控制

-顺序结构
-判断结构           
    -if语句
        1.if(布尔表达式)
            {}
        2.if(布尔表达式){
            }else{}
        ps:三元运算符为其简写格式(当其运算后有一具体的结果可以用该简写格式)
        3.if(布尔表达式 1){  
            }else if(布尔表达式 2){ 
            }else if(布尔表达式 3){ 
            }else { }   

        **注意**
        一条语句可省略大括号,但不建议省略。
        if语句一定只执行其中满足条件的一条语句(而不是多条)。
        局部代码块:定义局部变量的生命周期(回到变量:作用域,初始值,大括号)
-选择结构
    -switch语句(byte、short、int 或者 char)
    (功能性差,书写麻烦,不常用)
     switch(expression){
            case value :
               //语句
               break; //可选
           case value :
               //语句
               break; //可选
          //你可以有任意数量的case语句
           default : //可选
           //语句
        }//先读有效结果,最后才是default

    **注意**
    if:对具体的值判断;
        对区间判断;
        对运算结果是boolean类型的表达式判断;
    switch:对具体的值判断;
            值的个数通常是固定的;
            对于几个固定的值判断,建议switch,它会把具体的答案     都加载进内存,效率较高。 

-循环结构
    -while语句(先判断后执行)
        while( 布尔表达式 ) {
          //循环内容
        }
    -do……while语句(先执行后判断,至少执行一次)
        do {
           //代码语句
        }while(布尔表达式);

    **累加算法思想**
/*练习:获取1~10的和值(累加算法)
        1+0 
         1+2
          2+3
           2+3+4
            2+3+4+5
                ...
  思路:每次参与加法数值不确定;
       每次出现和值不确定;       
          和值递增;
       加法多次重复运算,且都是和值+下一个数。
步骤:定义一个变量1,用于记录参与加法的数值;
     定义一个变量2,用于记录和值;
     对变量1进行自增 ;
     加法运算时重复的。   

*/      int a = 1;//变量1
        int sum = 0;//变量2
        for (a = 1; a < 11; a++) {
            sum = sum + a;
        }
        System.out.println(sum);
    **计数器思想**
/*需求:1~100中6的倍数出现的次数(计数器思想)

  思路:由于从1开始增加,不断循环至100;
       1~100中出现某数等于6的倍数时,记录该数,并计数一次。
  步骤:定义一个变量,用于自增;
       定义一个变量,用于计数;
       设置条件能否被6整除(取模),可用if语句
       多次循环可用循环结构;            
*/
        int a = 0;
        int count = 0;
        for (int i = 1; i <= 100; i++) {
            if (i%6==0) {
                count++;
            }
        }
        System.out.println(count);
    -for语句
        for(初始化; 布尔表达式; 更新) {
               1      2     4
                //代码语句
                     3
         } 

    *无限循环最简单的形式*
    while(true){}
    for(;;){}
    *强调内容*
    一个条件一次判断-->if语句
    一个条件多次判断-->循环结构:循环次数未知-->while和do...while;  
                             循环次数已知-->for

    *while,do...while和for的说明*
    同:可以互换。
    异:变量的作用域不同。

    -foreach语句(数组)
        for(声明语句 : 表达式)
        {
           //代码句子
        }  

**记一下break和continue** 
break:
break 主要用在循环语句或者 switch 语句中,用来跳出**整个**语句块。
break 跳出最里层的循环,并且继续执行该循环下面的语句。

continue:
continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。                                                                                                       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值