Java基础复习(二)————基础语法(上)

1、Java关键字

被java语言赋予特殊意义的英文单词,java关键字都是小写的,例如:


注意:goto和contast作为保留字存在,不能被使用;判断是否是关键字,在使用开发工具时,关键字会被高亮显示。


2、标识符

(1)标识符是指给类,接口,方法,变量等起名字的字符序列,其组成如下:英文字母、数字、%和_ 。

(2)标识符不能有数字开头;不能为java关键字;区分大小写;一般命名遵循驼峰命名法;

(3)补充:类名、接口名首字母大写;方法名首字母小写;局部变量、成员变量名首字母一般小写;静态变量全部大写。

---------------------------------------------------------------------------------------------------------------------------------

*(1)下列命名哪些是规范的?

HelloWorld,DataClass,_983,$bS5_c7,class,DataClass#,98.3,HellWorld

正确:HelloWorld,DataClass,_983(不推荐),$bS5_c7(不推荐),HellWorld

---------------------------------------------------------------------------------------------------------------------------------


3、注释

(1)用于解释说明程序的文字。对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

(2)单行注释     格式:    //注释文字

        多行注释     格式:    /**

                                          *注释文字

                                          *注释文字

                                          **/

        文档注释     格式:    /**

                                          *注释文字

                                          *注释文字

                                          **/

(3)注释的作用:解释说明程序,提高了代码的阅读性;可以帮助我们调试程序。


4、变量

(1)在程序的执行过程中,其值在某个范围内可以发生改变的量

(2)变量的定义格式:

    A: 数据类型 变量名 = 初始化值;
    B: 数据类型 变量名;

        变量名 = 初始化值;


5、数据类型

(1)java数据类型分为两大类:基本类型和引用类型。


(2)基础类型的内存大小和取值范围以及默认值如下:

数据类型 关键字 在内存中占用的字节数 取值范围 默认值
布尔型 boolean 1byte(8位) true,false false
字节型 byle 1byte(8位) -128~127 0
字符型 char 2byte(16位) 0~2^16 - 1 '\u0000'
短整型 short 2byte(16位) -2^15~2^15 -1 0
整型 int 4byte(32位)  -2^31~2^31 -1 0
长整型 long 8byte(64位) -2^63~2^63 -1 0
单精度浮点型 float 4byte(32位) 1.4013E-45~3.4028E+38 0.0F
双精度浮点型 double 8byte(64位) 4.9E-324~1.7977E+308 0.0D

(3)数据类型的转换

  • boolean类型不参加类型转换
  • 默认转换 (从小的类型到大的类型)

        byte/short/char-->int-->long-->float-->double


  • 强制转换(从大的类型到小的类型)

        转换会失去精度,一般不推荐,格式:目标数据类型 变量名 = (目标数据类型) (被转换的数据);

---------------------------------------------------------------------------------------------------------------------------------

*(1)以下的变量定义正确吗?     int i1 = 600;       long l1 = 88888888888;

第一个正确,第二个错误。第二个long类型要在最后加L,即 88888888888L。

*(2)下面两种方式有区别吗?     float f1 = 12.345f;      float f2 = (float)12.345;

有区别,第一个是定义一个float类型并赋值。第二个申明一个float类型将double类型的值强转为float类型并赋值。

*(3)下面的程序有问题吗,如果有,在哪里呢?

         byte b1 = 3;

         byte b2 = 4;

         byte b3 = b1 + b2;

         byte b4 = 3 + 4;

有问题,byte = b1 + b2。byte在计算是会先自动转成int类型在进行运算,算出来的值是int类型,应该把结果进行强转转成

byte类型。而3+4是常量类型,算出来结果在byte取值范围,所以还是byte类型。

*(4)下面的操作结果是什么呢?       byte b = (byte)130;

结果是-126。byte的取值范围是-128~127,超出范围后将从头开始取值。

*(5)下面的代码执行结果是什么?   System.out.println('a' + 1);  System.out.println("a" + 1);

结果是98,"a1"。字符参与运算是查找ASCII里面的值,字符串参与运算实际是字符串拼接。

---------------------------------------------------------------------------------------------------------------------------------


6、运算符

(1)算术运算符


注意:

+运算符的其他作用:如果+符号的两边存在字符串,就是字符串拼接。

/运算符的两边如果是整数,结果则是整数;/运算符的两边存在小数,则结果默认为double类型。

(2)赋值运算符

= , +=, -=, *=, /=, %=

---------------------------------------------------------------------------------------------------------------------------------

*(1)下面的两段代码哪有问题?

         short s = 1;   s = s + 1;            

         short s = 1;   s += 1;

第一段有问题,s=s+1,s+1的计算结果默认用int类型存储,所有类型不匹配,应该加一个强转。

第二段没有问题,s+=1,自动存在一个默认强制转换,相当于 s = (short)s+1。

---------------------------------------------------------------------------------------------------------------------------------

(3)关系运算符


注意:

比较运算符的结果都是boolean类型的。

(4)逻辑运算符


&和&&, | 和 || 的区别:&,| 两边的判断都要执行;当使用&&时,前者的判断结果为false,后者不用执行判断;当使用 || 时,前者的判断结果为true,后者不用判断。

---------------------------------------------------------------------------------------------------------------------------------

*(1)下面两端代码的输出分别是多少?

         int a = 5;                                                 int a = 5;

         if(a < 6 || ++a > 5) {                                if(a < 6 | ++a > 5) {

         System.out.println(a);                              System.out.println(a);

         }                                                             }

第一段代码输出为5,第二段代码输出为6。原因是  || 和 | 的不同,|| 先判断a < 6为true,符合条件输出a的值。| 无论判断结果都要执行,因此a < 6 | ++a > 5都执行,符合条件输出a的值。

---------------------------------------------------------------------------------------------------------------------------------

(5)位运算符(了解)



(6)三目运算符

格式如下:

(关系表达式)?表达式1:表达式2;

如果条件为true,运算后的结果是表达式1;

如果条件为false,运算后的结果是表达式2;


7、流程控制语句

分类:顺序结构、选择结构、循环结构

(1)顺序结构:程序中最简单、最基本的结构。总的来说,先执行前面的语句,在执行后面的语句,从上到下执行语句。


(2)选择结构:也成为分支结构。代码先进行逻辑判断,通过逻辑判断的结果产生不同的选择,进入不通过的分支语句。Java提供的两种不同选择结构:if语句、switch语句

a)if语句:

         第一种格式:

         if(关系表达式){ 

         代码块;

         } else {

         代码块

         }

具体流程:先对if后面的表达式进行判断,如果是true,则执行if里面的代码块;反之执行else的代码块。

         第二种格式:

         if(关系表达式1){ 

         代码块;

         } else if(关系表达式2){

         代码块

         }

         …………

         else{

         代码块;

         } 

具体流程:  具体流程:先对if后面的表达式进行判断,如果是true,则执行if里面的代码块;如果是false跳过if的if里面的代码块,接着对紧挨的else if后面的表达式进行判断,通上面的做法一样,直到最后,前面的表达式都没满足就执行else的代码块。注意点:一般情况下,if和else if里的关系表达式的情况是排斥的,即满足其中一个关系表达式,则其他的表达式都不满足。


b)switch语句

         格式:

         switch(表达式) {
     case 值1:
代码块1;
break;
      case 值2:
代码块2;
break;
      ………
      default:
代码块n+1;
break;

         }




具体说明:表达式里面可以是byte,short,int,char类型;JDK5以后可以是枚举;JDK7以后可以是字符串。case:后面的值就是要表达式进行比较的值,并且case后面的值必须是常量。break:表示程序到这里中断,跳出switch语句。default:如果所有的情况都不匹配,就执行这里。

---------------------------------------------------------------------------------------------------------------------------------

*(1)下面代码执行的结果是什么?

  int a = 4;

  switch(a) {

  case 0:  System.out.println(a);

  case 1:  System.out.println(a);

  case 2:  System.out.println(a);

  case 3:  System.out.println(a);

  case 4:  System.out.println(a);

  case 5:  System.out.println(a);

  default: System.out.println("not find!");

  }

结果输出4(换行)4(换行)not find。 原因:在每个case语句后面没写break跳出导致case穿透。当满足case 4的情况下,会执行接下来的case情况下的语句,直到出现break或者继续执行下一个case情况下的语句。

---------------------------------------------------------------------------------------------------------------------------------

(3)循环结构

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

a)for循环语句

     for(初始化语句;判断条件语句;控制条件语句) {

          循环体语句;

     }


b)while循环语句

     while(判断条件语句) {

         循环体语句;

     }


c)do...while语句

     do {

         循环体语句;

     }while((判断条件语句);


d)foreach语句(个人喜欢叫它增强for循环)

     for(元素类型 元素变量x:待遍历的集合或数组) {

     引用了变量x的java语句;

     }

    补充:foreach在javaweb项目中很常用,必须掌握。

(4)跳转控制语句

        Java控制跳转包括break,continue,return 这三个语句。

a)break语句:

应用场景:在选择结构switch语句中;在循环语句中。

作用:跳出单层循环;跳出多层循环。

b)continue语句

应用场景:在循环语句中

作用:退出本次(一次)循环。

c)return语句

应用场景:在方法中

作用:结束一个方法。

---------------------------------------------------------------------------------------------------------------------------------

*(1)在规定处补齐下面代码,使得满足要求

         for(int x=1; x<=10; x++) {

             if(x%3 == 0) {

                 //补齐代码
             }
         System.out.println("Java基础班");
         }

 如何让控制台输出2次:Java基础班      补充代码:break

 如何让控制台输出7次:Java基础班      补充代码:continue

 如何让控制台输出13次:Java基础班    补充代码:System.out.println("Java基础班");

---------------------------------------------------------------------------------------------------------------------------------

猜你喜欢

转载自blog.csdn.net/maxwellqaq/article/details/81021223