Java基本语法(二)

2.1 关键字

         定义:被Java语言赋予了特殊含义,用作专门用途的字符串(单词)

         特点:关键字中所有字母都为小写

用于定义数据类型的关键字

class

interface

enum

byte

short

int

long

float

double

char

boolean

void

用于定义数据类型值的关键字

true

false

null

用于定义流程控制的关键字

if

else

switch

case

default

while

do

for

break

continue

return

用于定义访问权限修饰符的关键字

private

protected

public

用于定义类,函数,变量修饰符的关键字

abstract

final

static

synchronized

用于定义类与类之间关系的关键字

extends

implements

用于定义建立实例及引用实例,判断实例的关键字

new

this

super

instanceof

用于异常处理的关键字

try

catch

finally

throw

throws

用于包的关键字

package

import

其他修饰符关键字

native

strictfp

transient

volatile

assert

2.2 标识符

        1.标识符:

            Java对各种变量、方法等要素命名时使用的字符序列称为标识符。

           凡是自己可以起名字的地方都叫标识符。

        2.定义合法标识符规则:

            ---由26个英文字母大小写,数字,_或$组成

            ---数字不可以开头

            ---不可以使用关键字和保留字,但能包含关键字和保留字。

             ---Java中严格区分大小写,长度无限制。

              ---标识符不能包含空格

            注意:在起名字的时候,为了提高阅读性,要尽量有意义,“见名知意”。

                      &abc                     2abc                        class                   class1                         Animal                                                         animal                     last name                   a                         age

        3.Java中的名称命名规范

           1)包名:多单词组成时,所有字母都小写:xxxyyyzzz

           2)类名接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz

          3)变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz

          4)常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

2.3变量

       1.变量的概念:

           1)内存中的一个存储区域

           2)该区域有自己的名称(变量名)和类型(数据类型)

           3)Java中每个变量必须先声明,后使用

           4)该区域的数据可以在同一类型范围内不断变化

       2.定义变量的格式数据类型     变量名=初始化值

       3.变量是通过使用变量名来访问这块区域的

       4.Java是强类型语言,每个变量必须先声明类型,后使用

       5.使用变量注意:

               变量的作用域:一对{  }之间有效

       6.变量的分类:

          1)按被声明的位置划分:

  •                成员变量:方法外部、类的内部定义的变量
  •                局部变量:方法或语句块内部定义的变量

              注意:类外面(类对应的大括号外面)不能有变量的声明

          2)按所属的数据类型划分:

  •               基本数据类型变量
  •               引用数据类型变量

        3)变量的分类----按数据类型

              对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。

                (1)整数类型:byte、short、int、long

  •                   Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性。
  •                   Java的整型常量默认为int型,声明long型常量须后加‘l’或‘L’

类   型

占用存储空间

表数范围

byte

1字节

-128 ~ 127

short

2字节

-215 ~215-1 

int

4字节

-231 ~ 231-1

long

8字节

-263 ~ 263-1

                (2)浮点类型:float、double

  •                     与整数类型类似,Java浮点类型也有固定的表数范围和字段长度,不受具体OS的影响。
  •                     Java的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。
  •                    浮点型常量有两种表示形式:

                             ---十进制数形式:如:5.12       512.0f        .512   (必须有小数点)

                             ---科学计数法形式:如:5.12e2      512E2     100E-2

类  型

占用存储空间

表数范围

单精度float

4字节

-3.403E38 ~ 3.403E38

双精度double

8字节

-1.798E308 ~ 1.798E308

                    (3)字符类型:char

  •                            char型数据用来表示通常意义上的“字符”。
  •                             字符型常量的三种表现形式:

                                    ---字符常量是用单引号(‘ ’)括起来的单个字符,涵盖世界上所有书面语的字符。

                                        例如:char c1 = 'a';   char c2 = '中'; char c3 =  '9';

                                    ---Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。

                                        例如:char c3 = '\n';                    '\n'表示换行符

                                    ---直接使用Unicode值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。

                                        如:\u000a 表示 \n。

  •                        char类型是可以进行运算的。因为它都对应有Unicode值。       

                      (4)布尔类型:boolean

  •                        boolean类型适于逻辑运算,一般用于程序流程控制:

                                 ---if条件控制语句

                                 ---while循环控制语句

                                 ---do-while循环控制语句

                                 ---for循环控制语句

  •                         boolean类型数据只允许取值true和false,不可以0或非0的整数替代true和false,这点和C语言不同。

          7.基本数据类型转换

               1)自动类型转换:容量小的类型自动转换为容量大的数据类型。数据类型按容量大小排序为:

               2)有多种类型的数据混合运算时,系统首先自动将所有数据转化成容量最大的那种数据类型,然后再进行计算。

               3)byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。

              4)当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。

         8.强制类型转换

             1)自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符*(()),但可能造成精度降低或溢出,格外要注意。

             2)通常,字符串不能直接转换为基本类型,但通过基本类型对应的包装类则可以实现把字符串转换成基本类型。

                  如: String a = “43”; int i = Integer.parseInt(a);

           3)boolean类型不可以转换为其它的数据类型。

2.4进制

         1.对于整数,有四种表示方式:

  •              二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。
  •             十进制:0-9 ,满 10 进 1.
  •             八进制:0-7 ,满 8 进1. 以数字 0 开头表示。
  •            十六进制0-9 及 A-F,满 16 进1. 以 0x 或 0X开头表示。此处的A-F不区分大小写。

         2.所有数字在计算机底部都以二进制形式存在。

        3.计算机以补码的形式保存所有的整数。

        4.正数的补码与其原码相同;负数的补码是在其反码的末位加1.

        5.原码:直接将一个数值换成二进制数。

        6.反码:是对原码按位取反,只是最高位(符号位)保持不变。

        7.Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;

                              当是long类型时,二进制默认占64位,第64位是符号位。

        8.byte 的范围:-128 ~ 127

         9.进制的基本转换

           ----十进制     二进制互转

                     十进制转成二进制     除以2取余数

                     二进制转成十进制      乘以2的幂数

2.5运算符

算数运算符 赋值运算符 比较运算符(关系运算符)
逻辑运算符 位运算符 三元运算符

        1.算数运算符

运算符

运算

范例

结果

+

正号

+3

3

-

负号

b=4; -b

-4

+

5+5

10

-

6-4

2

*

3*4

12

/

5/5

1

%

取模

5%5

0

++

++

自增(前):先运算后取值

自增(后):先取值后运算

a=2;b=++a;

a=2;b=a++;

a=3;b=3

a=3;b=2

- -

- -

自减(前):先运算后取值

自减(后):先取值后运算

a=2;b=- -a

a=2;b=a- -

a=1;b=1

a=1;b=2

+

字符串相加

“He”+”llo”

“Hello”

             1)算数运算符的注意问题

  •                  如果对负数取模,可以把模数负号忽略不计,如:5%-2=1。但被模数是负数就另当别论。
  •                对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。                                   例如:int x=3510;x=x/1000*1000;  x的结果是?
  •                “+”除字符串相加功能外,还能把非字符串转换成字符串。                                                                                                          例如:System.out.println("5+5="+5+5); //打印结果是?

          2.赋值运算符

  •               符号:=
  •               扩展赋值运算符: +=, -=, *=, /=, %=

        3.比较运算符  

运算符

运算                                         范例                                              结果

==

相等于                                     4==3                                              false

!=

不等于                                     4!=3                                               true

<

小于                                          4<3                                               false

>

大于                                          4>3                                                true

<=

小于等于                                 4<=3                                             false

>=

大于等于                                 4>=3                                             false

instanceof

检查是否是类的对象         “Hello”  instanceof  String          true

                              注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。

                              注2:比较运算符“==”不能误写成“=”

          4.逻辑运算符       

运算符

运算

范例

结果

&

AND(与)

false & true

false

|

OR(或)

false|true

true

^

XOR(异或)

true^false

true

!

Not(非)

!true

false

&&

AND(短路)

false&&true

false

||

OR(短路)

false||true

true

           1)逻辑运算符用于连接布尔型表达式,在Java中不可以写成 3<x<6,应该写成x>3 && x<6 。

           2)“&”和“&&”的区别:

                ---单&时,左边无论真假,右边都进行运算;

               ---双&&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

         3)和“||”的区别同理,双或时,左边为真,右边不参与运算。

         4)异或(^)与或(|)的不同之处是:对于^而言,当左右都为true时,结果为false。                                                                 5.位运算符 

                                                                     位运算符的细节

<<

被移除的高位丢弃,空缺位补0。

>>

被移位的二进制最高位是0,右移后,空缺位补0;

最高位是1,空缺位补1。

>>>

被移位二进制最高位无论是0或者是1,空缺位都用0补。

&

二进制位进行&运算,只有1&1时结果是1,否则是0;

|

二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;

^

相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0

不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1

                       位运算符

运算符

运算

范例

<<

左移

3 << 2 = 12 --> 3*2*2=12

>>

右移

3 >> 1 = 1  --> 3/2=1

>>>

无符号右移

3 >>> 1 = 1 --> 3/2=1

&

与运算

6 & 3 = 2

|

或运算

6 | 3 = 7

^

异或运算

6 ^ 3 = 5

~

反码

~6 = -7

         位运算是直接对二进制进行运算。                                                                                                                                                    6.三元运算符

             格式:

                    ---(条件表达式)?表达式1:表达式2;

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

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

2.6流程控制

     --选择结构

           1.分支语句根据一定的条件有选择地执行或跳过特定的语句。

            2.Java分支语句分类

               ---if-else语句

               ---switch语句

           3.if-else语句语法格式

              if(布尔表达式) {               

                               语句或语句块;         

               }

               else if(布尔表达式){

                              语句或语句块;

                }else {

                               语句或语句块;

                }

         4.if-else语句应用举例

             public class TestAge{

                      public static void main(String args[]){

                              TestAge t = new TestAge();

                              t.age(75);

                     }

                     public void age(int age){

                              if (age< 0) {

                                             System.out.println("不可能!");

                            } else if (age>250) {

                                              System.out.println("是个妖怪!");

                           } else {  

                                               System.out.println("此人芳龄 " + age +" 马马乎乎啦!");

                           }

            }

     }

        5.switch语句语法格式

             switch(表达式){

                    case 常量1:

                                语句1;

                                 break;

                     case 常量2: 

                                  语句2;

                                  break;   

                      … …

                       case 常量N:

                                   语句N;

                                    break;

                       [default: 

                                     语句;

                                      break;]  

              }

     6.switch语句有关规则

  •         switch(表达式)中表达式的返回值必须是下述几种类型之一:int,byte,char,short,枚举,字符串;
  •         case子句中的值必须是常量,且所有case子句中的值应是不同的;
  •         default子句是任选的;
  •          break语句用来在执行完一个case分支后使程序跳出switch语句块;

     --循环结构

       1.循环语句功能:在循环条件满足的情况下,反复执行特定代码

       2.循环语句的四个组成部分

  •              初始化部分(init_statement)
  •              循环条件部分(test_exp)
  •              循环体部分(body_statement)
  •               迭代部分(alter_statement)

       3.循环语句分类

  •                   for循环
  •                   while循环
  •                    do/while循环    

       4.for循环语句

             语法格式:for(初始化表达式;布尔值测试表达式;更改表达式){

                                              语句或语句块;

                                }

           5.while循环语句

                语法格式:[初始化语句]

                                 while(布尔值测试表达式){

                                                           语句或语句块;

                                              [更改语句;]

                                 }

             6.do/while循环语句

                  语法格式:[初始化语句]

                                    do{

                                               语句或语句块;

                                                 [更改语句;]

                                     }while(布尔值测试表达式);

         7.特殊流程控制语句

             1)break语句

                        break语句用于终止某个语句块的执行

                            {    ……

                                  break;

                                 ……

                             }

                        break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块

                              label1:     {   ……

                              label2:             {   ……

                             label3:                           {   ……

                                                                         break label2;

                                                                        ……

                                                                     }

                                                       }

                                               }

             2)continue语句

  •                     continue语句用于跳过某个循环语句块的一次执行
  •                     continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环。

           3)特殊流程控制语句说明

  •                    break只能用于switch语句和循环语句中。
  •                    continue只能用于循环语句中。
  •                     标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。
  •                     break和continue之后不能有其他的语句,因为程序永远不会执行break和continue之后的语句。

2.7数组

  •               数组是多个相同类型数据的组合,实现对这些数据的统一管理。
  •                数组属引用类型,数组型数据是对象(Object),数组中的每个元素相当于该对象的成员变量。
  •                数组中的元素可以是任何数据类型,包括基本类型和引用类型。

     --一维数组

            1) 一维数组的声明方式:type  var[] 或 type[]  var;

                  例如:         int a[];   

                                       int[] a1;      

                                      double  b[];  

                                       Mydate []c;      //对象数组

              2)Java语言中声明数组时不能知道其长度(数组中元素的数)

                   例如: int a[5];    //非法

             3)数组元素的引用

  •                  Java中使用关键字new创建数组对象
  •                   定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
  •                  数组元素的引用方式:数组名[数组元素下标]

                            ---数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];

                            ---数组元素下标从0开始;长度为n的数组合法下标取值范围:0~n-1;

                                 如int a[]=new int[3];  可引用的数组元素为a[0]、a[1]、a[2]  

  •                每个数组都有一个属性length指明它的长度,例如:a.length 指明数组 a 的长度(元素个数)

               4)数组元素的默认初始化

                       数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。例如:

                    public class Test {

                            public static void main(String argv[]){

                                     int a[]= new int[5];

                                     System.out.println(a[3]);    //a[3]的默认值为0

                            }

                     }

            5)数组元素的默认初始值

           6)创建基本数据类型数组

                  Java中使用关键字new创建数组对象:

                    public class Test{

                                public static void main(String args[]){

                                   int[] s;

                                   s = new int[10];

                                   for ( int i=0; i<10; i++ ) {

                                              s[i] =2*i+1;  

                                              System.out.println(s[i]);

                                    }

                                }

                       }

创建基本数据类型一维数组对象演示:

                                    

                                                                 处内存状态

             7)创建对象数组

                     创建元素为引用类型(对象)的数组          

                         class MyDate {
                             private  int  day;
                             private int month;
                             private int year;
                             public MyDate(int d,int m,int y){
                                 day=d;month=m;year=y;
                             }
                             public void display(){
                                 System.out.println(day+"-"+month+"-"+year);
                           }
                         }

                         public class Test02 {
                                 public static void main(String[] args) {
                                     MyDate[]  m;
                                     m=new MyDate[10];
                                    for(int i=0;i<10;i++){
                                         m[i]=new MyDate(i+1,i+1,1990+i);
                                        m[i].display();
                                     }
                                 }
                         }

 创建元素为引用类型(对象)的数组演示

                            

               处内存状态                                               处内存状态                                                  for循环执行三次后内存状态

           8)数组初始化

  •                  动态初始化:数组定义与为数组元素分配空间并赋值的操作分开进行。

                 int a[];
                a=new int[3];
                a[0] = 3;
                a[1] = 9;
                a[2] = 8;
    
                MyDate dates[];
                dates = new MyDate[3];
                dates[0] = new MyDate(22, 7, 1964);
                dates[1] = new MyDate(1, 1, 2000);
                dates[2] = new MyDate(22, 12, 1964);

  •                  静态初始化:在定义数组的同时就为数组元素分配空间并赋值。

                 int a[]={3,9,8};
                MyDate  dates[]={
                               new MyDate(22,7,1964),
                               new MyDate(1,1,2000),
                               new MyDate(22,12,1964)
                 };

     --多维数组

          1.二维数组举例

             int [][] a = {{1,2},{3,4,0,9},{5,6,7}};

 i              j

j = 0

j = 1

j = 2

j = 3

i = 0

1

2

i = 1

3

4

0

9

i = 2

5

6

7

     

           2.Java中多维数组被做为数组的数组处理。

           3.Java中多维数组的声明和初始化应按从高维到低维的顺序进行

               int  t[][]=new   int[4][];       //t有4行,第一个维数不空即可

               t[0]=new   int[5];              //每一行都是一个有5个元素的一维数组

               t[1]=new   int[5]; 

              int t1[][] = new int [][4];   //非法

        4.Java中多维数组必须是规则矩阵形式

             int[][] tt = new int[4][];   

             tt[0] = new int[2];   

             tt[1] = new int[4];  

             tt[2] = new int[6];  

             tt[3] = new int[8];

             int tt[][] = new int[4][5];    //tt是一个4行5列的二维数组

             int [][] aa = new int[4][];

             aa[0] = new int[5];

             aa[1] = new int[1];

             aa[2] = new int[3];

            //…

       5.多维数组初始化

  •              静态初始化

                         int intArray[][] = {{1,2},{2,3},{3,4,5}};

                         int intArray1[3][2] = {{1,2},{2,3},{4,5}};

                         //illegal,等号左边不能指定维数

  •              动态初始化

                         int a[][] = new int[4][5];  

                        int b[][] = new int[3][]   

                        b[0] = new int[2];

                        b[1] = new int[3];

                        b[2] = new int[5];

             6.数组排序

                Java.util.Arrays类的sort()方法提供了数组元素排序功能:

                  import java.util.*;
                  public class Test06 {
                      public static void main(String[] args) {
                          int [] number = {5,900,1,5,77,30,64,700};
                          Arrays.sort(number);
                          for(int i=0;i<number.length;i++){
                              System.out.println(number[i]);
                          }
                  }    
                  }

猜你喜欢

转载自blog.csdn.net/shizhudufou/article/details/81626361