您的位置:首页 > 职场人生

黑马程序员——Java基本语法(一):关键字、标识符、常量与变量、运算符

2015-06-15 16:06 661 查看
——-
android培训、java培训、期待与您交流! ———-
 
一、Java语言的基本组成:

关键字、标识符、注释(上一章讲过) 、运算符、常量和变量 、语句、函数 、数组。
(1)关键字

关键字:被Java语言赋予了特殊含义的单词。注:关键字中的所有字母都为小写。
1、 用于定义数据类型的关键字
基本数据类型:
        整数类型:byte  short  int  long    浮点类型:float  double
        字符类型:char                             布尔型:boolean
引用数据类型:
       
class(类)  interface(接口)
         void用于函数上表示无返回值类型
2、用于定义数据类型值的关键字
       
true(真) false(假) null(空)
3、用于定义流程控制的关键字
        判断:if  else  switch case  default
        循环:for  while  do 
        结束本次循环,继续下次循环:continue               
        结束循环或选择结构:break
        返回:return
4、 用于定义访问权限修饰符的关键字
       
private(私有的) protected(受保护的) public(公有的)default(默认的)
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不是关键字,却是被虚拟机所识别的一个名称。
示例:使用编辑器EditPlus编写一个Hello World输出程序。



其中:编辑器中蓝色字体就是关键字,红色字体就是JDK为我们提供的类。EditPlus默认会创建一个后缀名为bak的备份文件,如果不想创建备份文件,只需要通过如下操作:点击Tools-->preferences-->File-->勾掉Create
backup file when saving即可。

(2)标识符

标识符:在程序中自定义的一些名称。
由26个字母大小写,数字0-9,符号_ $组成。
注:数字不能开头,不可以使用关键字,严格区分大小写,在起名字时,为了提高阅读性,尽量起有意义的名字。



(3)常量与变量

3.1、常量:表示不能改变的数值。



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

[align=left]二进制:0-1[/align]

[align=left]八进制:0-7,满8进1,以0开头[/align]

[align=left]十进制:0-9,满10进1[/align]

[align=left]十六进制:0-9,A-F,满16进1,以0x开头[/align]

注:8个二进制组成一个数据单元,称为字节。
示例:使用计算机进行进制转换
 1)点击“开始”-->“所有程序”-->“附件”-->“计算器”



2)点击“查看”-->“程序员”



3)现在就可以使用计算机来进行进制转换了



[align=left] 注:1Byte = 8bit[/align]
[align=left]          1KiB = 1024Byte[/align]
[align=left]          1MiB = 1024KiB[/align]
[align=left]          1GiB = 1024MiB[/align]
 
3.1.1、二进制与十进制之间的转换

十进制—>二进制。原理:对十进制数组进行除2运算 。例如6—>110
   


 二进制—>十进制。原理:二进制乘以2的过程。例如110—>6
     


3.1.2、其他进制间的转换

二进制—>十六进制。原理:每4位二进制就是一个十六进制位。例如90的二进制是01011010,将每4为二进制转换成对应的十六进制后就为0x5A
    


二进制—>八进制。原理:每3位二进制代表一位八进制位。例如90的八进制为132
    


3.1.3、负数的二进制表现形式

原理:就是正数的二进制取反+1。
例如:6的二进制为110。6在内存中占了4个字节,其表现形式为:
     


-6:就是6的二进制取反+1。
取反:就是将二进制的1变成0,0变成1。



结论:负数的最高位都是1。可通过代码的Integer.toBinaryString(-6);进行验证。

3.2、变量的概念:

变量就如同数学中的未知数。变量在内存中开辟一个空间,将不确定的数据进行存储;即在内存中开辟存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化。

3.2.1、为什么要定义变量?

用来不断的存放同一类型的常量,并可以重复使用。

3.2.2、使用变量应注意:

变量的作用范围(一对{}之间有效)
初始化值

3.2.3、定义变量的格式:

格式:数据类型   变量名=初始化值;
注:格式是固定的,记住格式,以不变应万变。



byte:在内存中占8个二进制位/1个8位/1个字节,范围:-128~127
short:在内存中占16个二进制位/2个8位/2个字节,范围:-2^15~2^15-1
int:在内存中占32个二进制位/4个8位/4个字节
long:在内存中占64个二进制位/8个8位/8个字节,如:long x=4L;
float:在内存中占32个二进制位/4个8位/4个字节,如:float x=3.2f;
double:在内存中占8个8位/8个字节
char:2个字节
注:  double类型的小数精度比float类型的小数更高。
当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作。

3.2.4、类型转换:

a).强制类型转换(显示类型转换):强制类型转换需要把类型进行手动转换,否则无法正常使用
如:byte b=2;    b=(byte)(b+3);
b).自动类型转换(隐式类型转换):如:byte b=2;    b=b+3;    会报错。因为:b是一个8位,3是4个8位,所以系统会自动将b提升至4个8位(类型自动提升),结果为4个8位,4个8位无法自动转换为byte(一个8位),所以会报错。

3.2.5、表达式的数据类型的自动提升:

所有的byte型、short型、char型的值将被提升至int型
如果一个操作数是long型,计算结果就是long型
如果一个操作数是float型,计算结果就是float型
如果一个操作数是double型,计算结果就是double型

(4)运算符

4.1、算术运算符:正号(+),负号(-),加(+),减(-),乘(*),除(/),取模(%),自增(++),自减(--),字符串相加("he"+"llo")



如:int x=4270;    x=x/1000;   结果为:x=4;
        取模%:当左边小于右边,结果为左边
                        当左边等于右边,结果为0
                        当右边为1,结果为0
                        当有负数时,只看左边。如:1%-5=1,-1%5=-1
       自增++:如:int a=3,b;
                               b=a++;  //相当于b=a+1;结果为:b=3,a=4
                               b=++a;  //结果为:b=4,a=4  注:当a独立存在是不受影响
       字符串数据和任何数据使用“+”相连接,最终都会变成字符串。
           如:system.out.println("ab"+5+5);   //结果为:ab55
4.2、转义字符:通过“\”来转变后面字母或者符号的含义

\n:换行
\b:退格,相当于backspace键
\r:相当于按下回车键,在window系统中,回车符是由“\r\n”两个字符
\t:制表符,相当于tab键
\\:表示反斜杠
\':表示单引号
\":表示双引号

4.3、赋值运算符:=,+=,—=,*=,/=,%=
        

   

例如:short s=3;
            s=s+2;  //编译失败,因为s会被提升为int类型,运算后的结果还是int类型,无法赋值给short类型。
            s+=2;    //编译成功,因为+=运算符在给赋值时,自动完成了强制转换操作。

4.4、比较运算符:==,!=,<,>,<=,>=,instanceof



注:比较运算符的结果是boolean型的,所以要么是true,要么是false

4.5、逻辑运算符:&(与),|(或),^(异或),!(非),&&(短路),||(短路)



&:只要两边的boolean表达式结果,有一个为false,那么结果就是false。只有两边都为true,结果为true。
|:两边只要有一个为true,结果为true;只有两边都为false,结果为false。
^:两边相同结果是false,两边不同结果是true。
&和&&的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
注:逻辑运算符用于连接boolean类型的表达式

4.6、位运算符:用于二进制的运算符号,直接对二进制进行运算





<<:左移;空位补0,被移除的高位丢弃,空缺位补0。就是乘以2的移动的位数次幂。如:3<<2—>3*2的2次方
>>:右移;被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。就是除以2的移动位数次幂。
>>>:无符号右移;被移位二进制最高位无论是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。
~:反码;对二进制进行取反。

4.7、 三元运算符

 格式: (条件表达式)?表达式1:表达式2;
  a)如果条件为true,运算后的结果是表达式1;
  b)如果条件为false,运算后的结果是表达式2;
 示例: 获取两个数中大数。
             int x=3,y=4,z;
              z = (x>y)?x:y;//z变量存储的就是两个数的大数。

运算符的优先级:



练习:1、最有效的方式算出3乘以8等于几?



  2、对两个整数变量的值进行交换
 


——-
android培训、java培训、期待与您交流! ———-

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: