黑马程序员——Java基础——Java语言组成

来源:互联网 发布:java static内存泄漏 编辑:程序博客网 时间:2024/05/19 14:39

点击打开链接 点击打开链接 点击打开链接 android培训、<a">点击打开链接 点击打开链接 java培训、期待与您交流!">点击打开链接 点击打开链接

 

Java语言基础组成

一、关键字

关键字的定义和特点

关键字是被java语言赋予了特殊含义的单词,其特点是关键字中所有字母都为小写。

用于定义数据类型的关键字:class、interface、byte、short、int、long、float、double、char、boolean、void。

用于定义数据类型值的关键字:true、false、null.

用于定义流程控制的关键字:if、else、switch、case、default、while、do、for、break、continue、return。

二、标识符

标识符是在程序中自定义的一些名称,由26个英文字母大小写、数字:0-9、符号:_$组成。

 

定义合法标识符的规则:

① 数字不可以开头

② 不可以使用关键字

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

 

三、Java中的名称规范

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

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

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

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

注释

l 单行注释://

l 多行注释:/*    */

l 文档注释:/**   */    可以用javadoc工具提取出来

四、常量和变量

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

常量分类:

l 整数常量:所有整数

l 小数常量:所有小数

l 布尔型常量:较为特有,只有两个值:true、false

l 字符常量:将一个字母数字或者符号用单引号(‘’)标识

l 字符串常量:将一个或者多个字符用双引号标识

l null常量:只有一个数值就是null。 

   

变量

l 内存中的一个存储区域

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

l 该类型中的数据可以再同一类型范围内不断变化

    变量:用来存放同一类型的常量,并可以重复使用。当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作。

使用变量注意:

l 变量的取值范围

l 初始化值

定义变量的格式:

   数据类型 变量名=初始化值

   注:格式是固定的,记住格式,以不变应万变

 

Java中的数据类型:

                           数值型        整数类型(byte、short、int、long)

  基本数据类型                      浮点类型(float、double)

                          字符型(char)

                          布尔型(boolean)

                          类(class)

   引用数据类型           接口(interface)

                          数组([])

                          

整数默认int,小数默认double

 

数据类型的取值范围

数据类型

取值范围

在内存中占的字节数

byte

-128~127

1

short

-215~215-1

2

int

-231~231-1

4

long

-263~263-1

8

float

3.402823e+38 ~ 1.401298e-45

 

4

double

1.797693e+308~ 4.9000000e-324 

 

8

boolean

只有2个值,true和false

 

char

存放字符,用’’表示

2

 

 

数据类型的转换

byte b=3;

b=b+2;

以上代码编译时报错,因为2默认是int类型的,b+2运行时会先把b转成int类型,再进行运算,运算结果是int类型,不能把int类型赋值给byte类型变量b,这时要强制转换。b=(byte)(b+2);

 

五、运算符

算术运算符

 

  b = a++;先把a的值赋给b,然后a自增。

  b = ++a;a先自增,然后把a的值赋给b.

  b = a--;先把a的值赋给b,然后a自减。

  b = --a;a先自减,然后把a的值赋给b.

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

  转义字符:通过反斜线来转变后面字母或者符号的含义。

\n:换行

\b:退格。相当于backspace键。

\r:按下回车键,回车符是由两个字符来表示\r\n.

\t:制表符。相当于tab键。

“hello”   “\”hello\””

\hello\    “\\hello\\”

 

赋值运算符

+= 左右两边的和赋给左边

  short s=4;

  ①  s=s+5;

  ②   s+=5;

    这两句程序的区别,第一句编译失败,第二句通过。原因:第一句做了两步,第一步加,5是int型,s+5运算完之后,其值会是int型的,不能强行赋给是。而第二句只做赋值运算,内部有自动转换动作。

此外还有-=   /=    %=   其作用同+=。

 

比较运算符

 

逻辑运算符:

 

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

异或:就是和|有点不一样。当true^true=false

&和&&d的特点:

&:无论左边是true是false,右边都运算

&&:当左边为false时,右边不运算。

|两边都参与运算

||:当左边为true时,右边不运算

 

位运算符

 

<< : 其实就是乘以2的移动次幂  x<<y   = x*2y

>>: 其实就是除以2的移动次幂。 x<<y   =  x/2y  最高位补什么由原有数据的最高位而定。如果最高位为0,右移后,用0补空位

  如果最高位为1,右移后,用1补空位。

>>>:无符号右移,不论最高位是1是0,右移后,都用0补空位。

一个数异或同一个数两次,结果还是那个数。

 

三元运算符

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

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

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

三元运算符

  好处:可以简化if else代码

 弊端:因为是一个运算符,所以运算完必须要有一个结果。

 

六、语句 程序流程控制

判断结构

三种格式:

 if(条件表达式){执行语句}

 If(条件表达式){执行语句}else{执行语句}

 If(条件表达式){执行语句}else if{执行语句}……else{执行语句}

选择结构

switch语句

格式:switch(表达式) //byte、short、int、char

{

  case 取值1: //case没有顺序

     执行语句

     break;

     ……

    Default:

    执行语句

    break;(可以省略)

}

  if和switch语句很像,具体什么场景下,应用哪一个语句?如果判断的具体数值不多,而是符合byte、int、short、char这四种类型,虽然两个语句都可以,但是我们一般使用switch,因为效率稍高。

其他情况:对区间判断,对结果为boolean类型的判断,使用if,if的使用返回更广。

 

循环结构

代表语句:while,do while,for

while语句格式:

while{条件表达式}

{

   执行语句;

}

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

容易出现的错误,while后加;号,

 

do while语句格式

do

{

   执行语句;

}while(条件表达式);

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

 

for(初始化表达式,条件表达式,循环条件表达式)

{

  执行语句;

}

注意:

1.变量有自己的作用域,对于for来讲,如果将用于控制循环的增量定义在for语句中那么该变量只在for语句内有效,for语句执行完毕,该变量在内存中被释放。

2.For和while可以进行交换,如果需要定义循环增量,for更为合适。如果循环结束,需要用循环的增量,则用while合适,for循环里把增量在循环体前面初始化也可以。

 

总结:

什么时候使用循环结构?

当要对某些语句执行很多次时,就使用循环结构。

无限循环的最简单表现形式:

l For(;;)

l While(true){}

 

练习:获取1~10的和,并打印

      1~100之间7的倍数的个数,并打印

 

//获取1~10的和并打印class GetSum {public static void main(String[] args) {int sum=0;for(int i=0;i<=10;i++){             sum+=i;}System.out.println("1~10的和为:"+sum);}}//获取1~100之间7的倍数的个数,并打印class GetNum{public static void main(String[] args){int count=0;for(int i=1;i<=100;i++){            if((i%7)==0){System.out.println(i);count++;}}System.out.println("1~100中7的倍数有:"+count+"个");}}


语句嵌套形式:其实就是语句中还有语句

比如:循环嵌套

例:打印九九乘法表

 

class print99{public static void main(String [] args){for(int i=1;i<10;i++){for(int j=1;j<=i;j++){System.out.print(j+"×"+i+"="+i*j+"\t");}System.out.println();//换行的作用        }}}


其他流程控制语句

break(跳出)    continue(继续)

1.作用范围

break语句:应用范围:选择结构和循环结构

continue语句:应用于循环结构

注:

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

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

Continue语句是结束本次循环继续下次循环

标号的出现,可以让这两个语句作用于指定的范围,如果没有标号,break跳出的是当前循环

标号:如下所示:

  w:for(int x=0;x<3,x++)   break w;

练习:打印图形,尖三角

 

class printPic{public static void main(String[] args){for(int i=0;i<5;i++){for(int j=i;j<5;j++){System.out.print(" ");}for(int k=0;k<=i;k++){System.out.print("* ");}System.out.println();}}}


七、函数

 什么是函数?

   函数就是定义在类中的具体有特定功能的独立小程序。函数也称为方法。

函数的格式:

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

{

   执行语句;

  Return 返回值

}

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

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

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

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

Return:用于结束函数

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

 

函数的特点

定义函数可以将功能代码进行封装

便于对该功能进行复用

函数只有被调用才会被执行

函数的出现提高了代码的复用性

对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写

注意:

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

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

 

如何定义一个函数呢?

1.既然函数是一个独立的功能,那么该功能的运算结果是什么要先明确

2.在明确定义该功能的过程中是否需要未知的内容参与运算。

 

函数的应用:定义一个打印九九乘法表的函数

 

class Print99_2{public static void print99(){for(int i=1;i<10;i++){for(int j=1;j<=i;j++){System.out.print(j+"×"+i+"="+i*j+"\t");}System.out.println();//换行的作用        }}}


函数的重载

重载(overload)的概念

在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不一样即可

重载的特点:

与返回值类型无关,只看参数列表

重载的好处:

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

什么时候用重载?

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

 

八、数组(已经分开叙述)

 

0 0
原创粉丝点击