黑马程序员---Java基本语法(二)

来源:互联网 发布:大数据建设面临的问题 编辑:程序博客网 时间:2024/04/29 12:25
-----------android培训java培训、java学习型技术博客、期待与您交流!------------  


 一:java注释


       注释格式

1、文档注释:“/**……*/”

2、单行(single-line)注释:“//……

3、块(block)注释(有的叫多行注释):“/*……*/”

————————————————————————————————————————————————————

Java代码基本格式:


Java中所有程序代码都必须存在于一个类中,用class关键字定义类,在class之前可以有一些修饰符。格式如下:

修饰符 class 类名

{

    程序代码

}

注:

1、Java是严格区分大小写的。

2、Java程序中一句连续的字符串不能分开在两行中写。


————————————————————————————————————————————————————



       注意  一:多行注释中不要嵌套多行注释!


                二:写程序时养成写注释的习惯,开头不用急着写代码,可以先写需求,思路和步骤!

          /*

          需求 .....

思路 .....

步骤 .....

*/

————————————————————————————————————————————————————

  2    java语言基础组成





2.1、关键字

        定义:被Java赋予了特殊含义的单词。

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


1、用于类和接口的声明:class, extends, implements, interface

2、包引入和包声明:import, package

3、数据类型:byte, boolean, char, double, int, long, float, short

4、某些数据类型的可选值:flase, ture, null

5、流程控制:break, case, continue, default, do, else, for, if, return, switch, while

6、异常处理:catch, finally, throw, throws, try

7、修饰符:abstract, final, native, private, protected, public, static

8、操作符:instanceof

9、创建对象: new

10、引用:this, supper

11、方法返回类型:void

 

三、标识符

     

     Java中的包、类、方法、参数、变量的名字,可以由任意顺序的大小写字母、数字、下划线(_)、美元符号($)组成,但不能以数字开头,不能是Java中的保留关键字


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

                aabbcc

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

                AaBb

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

                aaBb

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

                AA_BB

 

三、常量

  

1、整形常量

十进制

十六进制——以0x或0X开头

八进制——以0开头

长整形——以L(l)结尾


Binary是二进制的意思,

Octal是八进制的意思,

Hex是十六进制的意思。


int a = 10;

// 以二进制结果打印
    System.out.println(Integer.toBinaryString(a));



————————————————————————

 (1):  十进制 6  转换成二进制: 十进制转二进,除2取余数;


 方式: 结果为110

——————————————————————————

   (2): 二进制转化为十进制:二进制转换为十进制,乘以2的幂数。

    如1110的十进制等于:

   23*1+22*1+21*1+20*0=14。

——————————————————————————

  (3): 十进制与八进制和十六进制的互转 如下图:

   100011 转换成八进制:43  ,转换成十六进制:23



——————————————————————————

  (4): 如果一个数是负数,它的二进制怎么算呢?

   如图:-6的二进制表达形式为 6的二进制取反加1





2、浮点数常量

单精度浮点数——后面加f(F)

双精度浮点数——后面加d(D) 

注:

a.小数常量的默认类型是double型,所以float类型常量后一定要加f(F)。

b.浮点数常量可以用指数形式表示,如5.022e+23f

3、布尔常量

true或false

4、字符常量

由英文字母、数字、转义序列、特殊字符等的字符所表示,如'a'、'\t'等。

Java中的字符占两个字节,是用Unicode码表示的,也可以使用'\u'加Unicode码值来表示对应字符,如'\u0027'。

常用的转义字符有:

\t——表示接受键盘输入,相当于按了一下回车键

\n——表示换行

\t——表示制表符,相当于Tab键

\b——表示退格键,相当于Back Space键

\'——表示单引号

\”——表示双引号

\\——表示反斜杠“\”

5、字符串常量

字符串常量用双引号括起来。

6、null常量

null常量表示对象的引用为空。




——————————————————————————

——————————————————————————

四、变量

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

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

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

数据类型:

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

       


        说明:Java程序中,整数默认:int    小数默认:double

类型的自动提升:

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

         byte  b = 3 ; int c;

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

强制类型转换:

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

        byte b = 3;

        b = b + 4;//报错

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

 

五、运算符

1、算术运算符




如果a<b;

%代表取模运算  任何数%1=0; a%a=0; a%b=a;

a.b中有一个负数,则取 左边被模数!



注:进行取模运算时,如果有负数,运算结果取决于运算左边有没有负数。

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

2、赋值运算符

        符号:=  +=  -= *=  /=  %=

例:    int a,b,c; a=b=c =3;

           int a = 3;   a+=5;//等同运算a=a+5;

——————————————————————————

注意点: short  s=2;

               s=s+2;              //编译报错,因为s会被提升为int类型,运算后的结果还是int类型,无法赋值给short类型

               s+=2;               //编译通过,因为+=运算符在给s赋值时,自动完成了强制转换操作


——————————————————————————

3、比较运算符



逻辑运算符用于连接boolean类型的表达式。


       "&"  与符号特点:只要两边的boolean表达式结果,有一个为false,那么结果就是false。只有两边都为true,结果为true。

             

    

        "|"  或符号特点:两边只要有一个为true,结果为true;只有两边都为false,结果为false。

        "^"  异或符号特点:两边相同结果是false,两边不同结果是true。

&和&&的区别:

        单&(单与)时,左边无论真假,右边都进行运算

        双&(双与)时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。(运算效率高)

       ““||”        双或时,左边为真,右边不参与运算。

5、位运算符



        左移:<<;空位补0,被移除的高位丢弃,空缺位补0

  

       3<<2  运算如图:

     

     注意:  a<<b=a*2

                     

                         


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

       无符号右移: >>> ;被移位二进制最高位无论是0或者是1,空缺位都用0补。

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

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

                  异或:  ^     ;任何相同二进制位进行 ^运算,结果是01^1=0 , 0^0=0    不相同二进制位 ^运算结果是11^0=1 , 0^1=1

                 

                注意:一个数异或同一个数两次,结果还是原数(数字不变)【可用于数据加密解密:第一次异或运算相当于加密,第二次异或运算相当于解密】


                 注意 :( 与 ,或, 异或)在位运算中逻辑和比较运算符中方法相同   

练习题     

         

练习题:1)最有效率的算出2乘上8等于几?      答案 2〈〈3

              2)   对于两个整数变量的值进行互换(要求不能用第三方变量) ? 答案如下图:

               第一种方法:

   

            


             第二种方法:



      两种方法都可以,大家可以慢慢品味~

                   

                        3) 用比较运算符和位运算符将十进制60转换成十六进制!

               参考思路如下图

                      

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

6、  三元运算符

    格式:

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

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

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

示例:

        获取两个数中大数。

               int x=3,y=4,z;

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

运算符的优先级:



一、程序流程控制

        也称语句,主要有:判断结构、选择结构和循环结构。

1、 判断结构——if

         if语句的三种格式:

                    if.....

if....else....

if....elseif.....else.....

                  

if语句特点:

     1,每一种格式都是单条语句。

         2if...else 与三元运算的区别:三元运算符运算完要有值出现。好处是:可以简化if else代码。弊端是必须返回一个结果

         3,条件表达式无论写成什么样子,最终的结果不是true就是 false

2、 选择结构——switch

        switch语句格式:

                switch(表达式)

                {

                       case :.......

                              break

                       case:

                         ........

                              break

                       …...

                      default:

                            .......

                             break

                }

switch语句特点:

       1switch语句选择的类型只有四种:byteshortint char

       2case之间与default没有顺序。先执行第一个case,没有匹配的case执行default

       3)结束switch语句的两种情况:1、遇到break结束;2、执行到switch结尾结束。

       4)如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。 

注:JDK1.5以后可以接收枚举类型,JDK1.7以后可以接收字符串。

     注意:   if...elseif...else....和switch语句区别。具体什么场景下,应用哪个语句呢?如果判断的具体数值不多,而且符合byte  short  int  char这四种类型。虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。

                  其他情况如对区间判断,boolean类型判断,使用if,if的使用范围更广。 

3、 循环结构——while,do while,for

        while语句格式:

             while(条件表达式)

             {

                ......;

             }

        do while语句格式:

             do

             {

                .....;

             }while(条件表达式);

while和do while的区别:

        while:先判断条件,只有条件满足才执行循环体。do while:先执行循环体,再判断条件,条件满足,再继续执行循环体。

        do while:无论条件是否满足,循环体至少执行一次。


      注意“”不要写错地方,如果错写在了上面 y<3 的后面,程序将进入死循环,并不会继续向下读取语句!!

      

        for语句格式:

            for(初始化表达式;循环条件表达式;循环后的操作表达式)

            {

                 .......;

            }

说明:

        a,for里面的连个表达式运行的顺序,初始化表达式只执行一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复这个过程,直到条件不满足为止。

        b,while与for可以互换,区别在于: for中的变量在for循环结束就是在内存中释放

                                                           而while循环使用的变量在循环结束后还可以继续使用。  

        c,最简单无限循环格式的两种形式:while(true){}和 for(;;){},对于for来讲,表达式默认就是ture。无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。



 下面一个图片可以看出,for语句的执行先后顺序: 打印输出结果为:a dc dc...


        

      


4、其他流程控制语句——break,continue

        break    (跳出循环,跳到循环尾)语句:应用范围:选择结构和循环结构。

        continue(继续循环,跳到循环头)语句:应用于循环结构。

注:

       1,这两个语句离开应用范围,存在是没有意义的。

       2,这个两个语句单独存在时,下面都不可以有语句,因为执行不到。

       3,continue语句是结束本次循环继续下次循环。

       4,标号的出现,可以让这两个语句作用于指定的范围。只能用于循环结构。


 注意:多个for循环嵌套时,break 可以指定跳出哪个循环!!



 continue 同理,多个for循环,也可以指定!

 

二、函数

        定义:定义在类中的具有特定功能的一段独立小程序。也称方法。 

    格式:

        修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)

        {

                     执行语句;

                      return返回值;

            }

    其中:

         返回值类型:函数运行后的结果的数据类型。

         参数类型:是形式参数的数据类型。

         形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。

         实际参数:传递给形式参数的具体数值。

          return:用于结束函数。

         返回值:该值会返回给调用者。

    特点:

  • 定义函数可以将功能代码进行封装,便于对该功能进行复用。
  • 函数只有被调用才会被执行。
  • 函数的出现提高了代码的复用性。
  • 对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。

注意:

        a) 函数中只能调用函数,不可以在函数内部定义函数

        b) 定义函数时,函数的结果应该返回给调用者,交由调用者处理。


注意,返回类型为void的方法不可以用printIn()调用,如下图



 

函数的一个重要特性——重载(override)

      概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数列表的个数或者参数类型不同即可。

      特点:与返回值类型无关,只看参数列表。

      好处:方便于阅读,优化了程序设计。

      注意: 重载和返回值类型没有关系,两个方法只有返回类型不同时不能同时存在于一个类中!!

      示例:

              int add(int x,int y){return x+y;}

              int add(int x,int y,int z){returnx+y+z;

              double add(double x,double y){return x+y;}

什么时候用到重载?

      当定义的功能相同,但参与运算的未知内容不同。那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。




0 0
原创粉丝点击