Java基础语法(一)

Java语言的基础组成

 1. 关键字

   关键字的概念:被Java赋予了特殊涵义的单词。

  特点:体现上都是英文小写。

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

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

基本数据类型(四类八种):

        整数类型:byte  short  int  long   浮点类型:float  double

        字符类型:char                            布尔型:boolean

  byte:取值范围-2^7 ~ 2^7-1(-128~127)

 short:取值范围-2^15 ~ 2^15-1(-32768~32767)

     int:取值范围-2^31 ~ 2^31-1

    long:取值范围-2^63 ~ 2^63-1 

    float:单精度, 在内存中占4个字节

   double: 双精度 ,在内存中占8个字节

  char:取值范围0~65535

  boolean: 只有true和false两种

注:整数默认数据类型:int    小数默认数据类型:double

引用数据类型:

        class(类)  interface(接口)  

void用于函数上表示无返回值类型

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

        true(真)  false(假)  null(空)

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

        判断:if  else  switch  case  default

        循环:  while  do   for

        继续循环:continue                    结束循环或选择结构:break

        返回:return

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

        private(私有的) protected(受保护的)  public(公有的)

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

        abstract(抽象的) final(最终的)  static(静态的)  synchronized(同步的) enum(枚举)

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

        extends(继承) implements(实现)

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

        new(建立实例)  this(当前引用)  super(父类引用)  instanceof(判断对象类型)

8、 用于异常处理的关键字

        try(检查异常)  catch(捕获异常)  finally(最终执行) 

        throw  throws:两个都表示抛出异常,但使用位置不同

9、 用于包的关键字

        package(创建包) import(导入包)

10、其他修饰关键字

        native(本地)          

        strictfp(strict float point,精确浮点)  

        transient(变量修饰符,用它声明一个实例变量,在对象序列化时不会被序列化)

        volatile(类型修饰符,用来修饰被不同线程访问和修改的变量) 

        assert(断言,可以看作是异常处理的一种高级形式,用于捕捉我们在代码中做出的假设)

main不是关键字,却是被虚拟机所识别的一个名称。

二、标识符

        在程序中自定义的一些名称。

由26个英文字母大小写,数字0-9,符合 _ $组成。

定义合法标识符的规则

        1、 数字不可以开头。

        2、 不可以使用关键字。

注:Java中严格区分标识符的大小写。在起名字的时候,为了提高阅读性,要尽量有意义。

Java中的名称规范

        包名:多单词组成时所有字母都小写。

              ·  xxxyyyzzz

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

              ·  XxxYyyZzz

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

              · xxxYyyZzz

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

               · XXX_YYY_ZZZ

3.注释

 一个没有注释的程序是不合格的!

    注释的作用:1、注解、说明、解释我们的程序,提高代码的阅读性。;

                     2、调试程序。例如程序出现错误,可以例如注释来查找出错的地方。

    有三种注释方式:单行注释、多行注释、文档注释。

    单行注释://注释文字

    多行注释:/**/  注:多行注释不要嵌套多行注释。

    文档注释:是Java特有的注释,通常书写在类、域、构造函数、方法、定义之前。注释内容可以被JDK中的工具javadoc.exe所解析,生成一套以网页文件形式体现的该程序分说明文档。格式:例

    /**

    作者:

    版本:

    作用:

    等。

    */

       初学者应该养成先写注释再写代码的习惯,因为代码仅仅是思想的一种体现形式而已。将自己的思想通过注释先整理出来,再用代码去体现,不要每行都加注释,也不要每行都不加注释。

 4.常量

 常量表示不能改变的数值

常量分类:

  1.整数常量:所有整数;

  2.小数常量:所有小数;

  3.字符常量:将一个数字,字母或符号用单引号('')标识;

  4.字符串常量:将一些数字,字母或符号用双引号("")标识;

  5.布尔型常量:只有TRUE和FALSE;

  6.null常量:只有一个数值null。

对于整数,Java有三种表现形式:

  • 十进制:0-9,满10进1。
  • 八进制:0-7,满8进1,用0开头表示。
  • 十六进制:0-9,A-F,满16进1,用0x开头表示。

进制的基本转换:

  十进制转换成二进制就是用这个数除以2,如果能整除,在后面标个0,如果不能整除,在后面标识个1,结果取整数。然后把结果再除以2,按照前面的方法标0或1。一直除到结果为1的时候。然后把后面的0和1按照从下往上的顺序读出来,就是这个数的二进制了。我们用6来举例。

 

二进制转换为十进制:0*2^0+1*2^1+1*2^2=6

无论二进制位上是0还是1,都是按照2的0次幂,2的1次幂……往后算,所以在这里有个简单的记法,

       0    0    0   -  0    0    0    0

       64  32   16    8    4    2    1

从右向左看,第一个位是2的0次幂,第二个是2的1次幂……,只需要记住1  2  4  8 ……,这样只需要看这个位上是不是1,如果是1的话就加上对应的数。是0就跳过。

然后把对应的数相加就是十进制了。比如 100101 。有1的数下面对应的数分别是1,4,32。所以100101换算成十进制就是1+4+32=37.

简单来说,十进制转换为二进制就是除2取余数,二进制转换为十进制,乘以2的幂数。

 十进制与八进制和十六进制的互转,跟转换二进制的方法一样。有简便的算法就是,可以先将十进制转换为二进制,再转换为八进制和十六进制。这就利用了一个八进制位相当于三个二进制位,而一个十六进制位相当于四个二进制位。如:

负数的二进制表现形式:只要将对应的正数取反(1变成0,0变成1)加1就行了。如:-6的二进制

注:负数的最高位都是1

5.变量

        概念:内存中的一个存储空间。有自己的名称(变量名)和类型(数据类型)。

       作用:用来不断的存放同一类型的数据,并可以重复使用。

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

数据类型:

        Java中有两种数据类型:1、基本数据类型;2、引用数据类型。这里主要讲解基本数据类型。

 

类型的自动提升:

        在运算中,当低类型数据与高类型数据进行计算时,系统会自动将表达式中的低类型数据提升到高类型。如:

         byte  b = 3 ; int a;

         a= b + 1;  //b会自动提升为int类型进行运算。

强制类型转换:

       当程序中,数据类型需要变换时,可以进行强制转换。如:

        byte b = 3;

        b = b + 2;//报错

        b = (byte)(b+2);//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b。

  那么我们什么时候定义变量呢?

  当数据不确定并且需要对数据存储的时候。就定义一个变量来完成存储动作。

6.运算符

(1)算术运算符

%(取模)
·    当左边的绝对值小于右边:结果是左边。
·    当左边的绝对值等于右边或者是右边倍数的时候:结果是0。
·    当左边的绝对值大于右边:结果是余数,符号取决与左边的的符号。
·    取余的正负号取决于左边,右边忽略不记。
·    用途:任意正整数%2 结果是要么0,要么1。用于切换条件。

++,--(自增,自减)

递增,递减运算符。就是加1或者减1
·     单独存在,放在操作数的前面或者后面,结果一样
·     参与运算时:
           ·放在操作数的前面,先自身加或者减1,然后再参与运算。
           ·放在操作数的后面,先参与运算,然后再自身加或者减1。

:     字符串数据和任何数据使用 +都是相连接,最终都会变成字符串。

(2)转义字符

定义: 通过\来转变后面符号的含义

\n:换行;

\b:退格,相当于backspace键;

\t:制表符,相当于Tab键;

\r:回车;

注:在Linux下,回车符是有“\n”一个字符表示的,在dos中直接识别“\n”,而在windows中,回车键是由“\r\n”两个字符表示的。

(3)赋值运算符

A:=:赋值运算符 把右边的值赋给左边
          举例:int x = 3; 把3赋给int类型变量x
                        int a,b,c;
                       a = b = c = 5;(是正确的)
B:+=:加赋值运算符 把左边和右边的和赋给左边

            举例:int x = 3; x+=2;等同于 x = x + 2;
                问个问题 byte b = 5;
                                  b += 2;
                                System.out.println(b);//会不会报错
                            
          不会报错,因为  +=运算符在给b赋值时,自动完成了强转操作。

(4)比较运算符

(5)逻辑运算符

  注:一个数和另一个数异或两次,还是本身。例 7^5^5=7

(6)位运算符

        左移:<<;空位补0,被移除的高位丢弃,空缺位补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。

        反码:~;对二进制进行取反。

 (7)三元运算符

    格式:

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

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

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

示例:

        获取两个数中大数。

                int x=3,y=4,z;

                z = (x>y)?x:y;//z变量存储的就是两个数的大数。

最后编写个小程序练习一下

 1 /*
 2     需求:把两个变量的值进行交换;
 3 */    
 4          
 5 class JiaoHuan 
 6 {
 7     public static void main(String[] args) 
 8     {
 9         //1.可以通过定义一个第三方变量来进行交换。在开发中经常用到
10         int a=4,b=7;
11         System.out.println("a="+a+"\tb="+b);
12         int c;
13         c=a;
14         a=b;
15         b=c;
16         System.out.println("a="+a+"\tb="+b);
17         // 2.还可以通过两个数的和来进行交换,但是如果两个数非常大,他们的和超过int的取值范围就会报错。所以有局限性
18         int a1=4,b1=7;
19         System.out.println("a1="+a1+"\tb1="+b1);
20         //把两个数的和赋给a1
21         a1=a1+b1;
22         //用和减去b1的值获得a1的值,并把a1的值赋值个b1
23         b1=a1-b1;
24         a1=a1-b1;
25         System.out.println("a1="+a1+"\tb1="+b1);
26         //3.通过一个数异或同一个数两次还是自身来进行设计。
27         int a2=4,b2=7;
28         System.out.println("a2="+a2+"\tb2="+b2);
29         //a2和b2异或一次,把异或后的值赋值给a2
30         a2=a2^b2;
31         //a2和b2的异或后的值再和b2的值异或一次,得到a2开始的值也就是4,然后把4赋给b2。这样b2就得到a2的值了
32         b2=a2^b2;
33         //同样,b2的值异或a2的值两次也是它自身。现在的a2里面的值是他们异或一次的值,只需要用这个值再和a2原本的值异或一次就行了。
34         //现在这个值在b2中,所以用a2异或b2,最后得到b2原本的值,再把它赋给a2.这样就完成了交换
35         a2=a2^b2;
36         System.out.println("a2="+a2+"\tb2="+b2);
37     }
38 }

运行结果

 

 

posted on 2014-11-23 11:12  生命礼赞  阅读(302)  评论(0)    收藏  举报