黑马程序员--java学习第二章

来源:互联网 发布:心事谁人知 黄乙玲 编辑:程序博客网 时间:2024/05/19 23:24

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

今天从13:58开始学习:

想要让一个java程序运行起来,那么必须要有main方法,才能够让这个程序运行起来。所以很多时候,我们编写一个许多类,最后都要编写一个测试类,然后里面有一个publci static void main(String[] args)方法用来执行这个项目,所以main方法就是一个执行的方法。

我们为什么要进行强制类型转换呢,当我们把一中类型的变量值赋给另一种类型的变量值的时候,就要进行强制类型转换。

1.好的,复习了37分钟,主要是背诵记忆,所以就多花了些时间,不过不要紧,我们接着来学习新的知识点。

我们来看看变量的有效范围:

比如我们俩看一个例子,还是在lesson.java中来做:

class Lesson{

public static void main(String[] args){

{

int x=3;

System.out.println(x);

}

System.out.println(x);

}

}

会报错,你知道为什么吗?因为 {

int x=3;

System.out.println(x);

}

这是一个复合语句,外面的System语句不能访问它里面的变量,所以会报错。

注意,在C语言中:

比如

Int x=9;

{   //一个复合语句

Int x=3;//从新定义了一个语句

System.out.println(x);//注意这里打印的是符合语句里面的x,也就是3.
}

System.out.println(x);//这里打印的是9;

。,

//但是在java中不允许这样的嵌套定义。

2.我们学完了java的生命周期和作用域,再来看看java的函数

比如说我们在编写一个游戏的时候,需要一个发射炮弹的功能,这个功能可能需要100行左右的代码,但是很多代码都是重复性的写的,这样的程序会变得很臃肿,而且维护起来也很容易出错。各种编程语言都会遇到这样的问题。

现在一般都会将这个发射炮弹的代码抽取出来,然后写成一个子程序。只要在主程序中写上子程序的名字,计算机就会执行子程序,等子程序执行完之后,又会回到主程序,然后继续往下执行。

那么在java中,把这种子程序叫做函数

来看一个函数的例子:

class Lesson{

public static void main(String[] args){

/**{

int x=3;

System.out.println(x);

}

//System.out.println(x);

}*/

//我们来看一个打印矩形的例子

for(int i=0;i<3;i++){//注意,就是在java中初始是0,所以是小于3,就是循环里面的内容3

for(int j=0;j<5;j++){

System.out.println("*");//在里面打印出5*号,这是一行

}

System.out.println();//打印一个空行

}

//那么整个程序就是将五个*号,一个空格循环打印3

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

for(int j=0;j<3;j++){

System.out.println("*");

}

System.out.println();

}

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

for(int j=0;j<4;j++){

System.out.println("*");

}

System.out.println();

}

}

}

来看看打印的结果:

3.我们上面的每一段程序都非常类似,除了我们指定的宽度和高度不一样。那么我们来看看如何将上面的程序变成函数的类型。

注意,我们这个函数,也就是这个子程序,是要单独从这个main方法中拿出来的,不是在main方法里面。

函数就是专门针对这种类似重复的语句来做的。

注意,我们的执行代码最后都要写在main方法里面。

class Lesson{

public static void main(String[] args){

drawRectangle(3,5);

drawRectangle(2,4);

drawRectangle(4,4);

}

static void drawRectangle(int x,int y){

//这里面的代码,就是说,打印出x个这样的东西:y*号加上一个空格

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

for(int j=0;j<y;j++){

System.out.println('*');

}

System.out.println();

}

}

}

看看效果:

可以。

通过这个程序的编写,我们大概就了解了函数的作用和编写方式。

4.那么函数定义的格式:

返回值类型   函数名(参数类型 ....,参数类型.....{

程序代码;

Return 返回值;
}

参数类型就是,比如一个水杯,这个水杯是大的还是小的,这个水杯是玻璃的还是不锈钢的。

然后返回值,就是给主程序返回一个值,就是这个水杯。

我们再来看看有这个返回值的函数的编写与调用过程上面那个绘制图形的是不用返回值的:

class Lesson{

public static void main(String[] args){

//那么在这边如何调用呢

int area=getArea(3,5);

System.out.println("3*5="+area);//然后对得到的参数进行处理

}

static int getArea(int x,int y){//求一个矩形的面积

//我们可以这样做

int sum=x*y;

return sum;

//也可以这样做

//return x*y;

}

}

注意,比如我们前面写的那个打印矩形的程序,它的返回类型是void,比如我们打扫房间,这个是不需要返回什么的,也就是return什么的。

在这种我们的结果没有返回值的情况下,比如打扫房间,绘制东西等没有一个确定的返回值,就可以用void来充数,不需要return。也就是说void不需要return,而其他函数则需要return。不像求矩形的面积,有一个明确的返回类型就是int类型。

Return是返回到主程序中。

5.注意在使用这个参数的时候,经常要用if语句进行判断,就是if,比如上面的int类型,要判断x,y是不是>0,否则就是非法参数,我们很多程序出错就是由于非法参数。进行判断是一项基本要求。

我们来分析一下函数调用的过程:

进入主程序,然后getArea()会回到函数,然后将它赋值的数传到函数里面去,函数最后有一个返回值,就返回给这个int area.

6.我们再来学习程序的流程控制:

顺序结构;

选择结构;

循环结构;

顺序结构:毫无疑问就是程序一行一行往下执行的结构。中间没有判断和跳转,直到程序结束。

这个我们前面经常用到。

选择结构有if switch语句。

If(表达式){
}else{
}

//如果if中的表达式为真的话,就执行里面的从句,否则就执行else里面的。

还有一种就是:

If(表达式){

}

Else if(表达式){
}

Else if(表达式){
}

Else{
}

我们先来看看if -else的使用:

public class Lesson1{

public static void main(String[] args){

int x=2;

if(x<3){

System.out.println("x<3");

}else{

System.out.println("x>=3");

}

}

}

打印结果:

7.我们可以使用if(){}   

Else if(){
}

Else if(){
}

Else{
}

来进行多个条件的判断,注意,我们前面学习的if-else就是一个条件的判断,这个是多个条件的判断。

来看一个例子:

public class Lesson1{

public static void main(String[] args){

int x=5;

if(x<4){

System.out.println("x<4");

}else if(x>=4&&x<6){

System.out.println("x>=4&&x<6");

}

else {

System.out.println("x>=6");

}

}

}

来看看打印结果:

还有注意在if中的表达式赋值是用==,比如:if(x==2);

注意,而且你在一个判断语句,比如if语句中,又可以定义很多小的if语句:

If(){

If(){
}else if(){
}

Else{
}
}else{
}

一般一个条件的判断,我们用if-else,但是多条件判断哦我们一般不用if-else if-else;而是使用switch-case: break;

这个在android中经常用到,就不讲了。

但是要注意switch语句只能够判断byte,short,int,long类型,不可以接收其他类型。

8.java中的流程控制主要是有三个:顺序结构,选择结构,循环结构。

我们来看看循环结构:

Java中的循环语句主要是有while和for两种类型:

先来看看while循环语句:

While(表达式)

.......;

//如果表达式是真,就循环执行里面的语句。

注意这个例子:和if一样,原来不是符合语句,也就是说没有括号:

public class Lesson1{

public static void main(String[] args){

Int x=0;

while(x<10)

System.out.println(x);

x++;

}

}

//上面的意思就是,定义一个变量x,初始值为0.然后我们循环一下,如果x<10,那么打印出x的值,后面有一个x++,执行完上面一句后,然后x+1,再执行一次,打印出来,所以意思就是打印出所有的x<10的整数。

但是这边却不是这样,为什么呢,因为没有括号,所以x++不算while里面的,所以要加上括号。

public class Lesson1{

public static void main(String[] args){

int x=0;

while(x<10){

System.out.println(x);

x++;

}

}

}

看看打印结果:

注意,我们的初始值是0,所以从0开始打印,如果初始值是1,那么就从1开始打印。

9.我们再来看看循环结构while语句的另外一种情况:

Do-while:

它与while语句的区别就是:

While语句先进行表达式的判断,如果为真,就执行里面的句子。

do-while是先不管三七二十一,现在do里面将所有的东西执行一遍再说,执行完之后,再到while语句中进行表达式判断。如果while中的表达式为真,则回来继续执行do里面的语句,知道while表达式的运算结果为假,才结束整个do-while.

并且在while语句后面要加上一个分号。

我们大多数时候,都是使用while语句,很少使用do-while,但是有些程序使用do-while更简单:

比如说我们不断读取键盘上输入的字符,直到读到字符q为止。程序结束。

我们首先用while来写这个程序:

public class Lesson1{

public static void main(String[] args){

int x=System.in.read();//读取现在输入的键盘字符,保存为整数型

while(x!='q'){

//如果x不是q,那么打印出它所对应的字符,要进行强制类型转换

System.out.println((char)x);

//然后打印出下一个输入的字符

int x=System.in.read();

//由于是在循环语句中是,所以会一直循环下去

}

}

}

来编译运行一下。

我们现在把这段程序代码改为do-while来编写:

Do-while是不管三七二十一先执行do里面的语句,上来就进行执行。

public class Lesson1{

public static void main(String[] args){

do{

try{

x=System.in.read();}

catch(Exception e){

System.out.println(x);

}

}

while(x!='q');

}

}

直到x=q时结束打印。

10.看完了while循环,我们再来看看for循环。

public class Lesson1{

public static void main(String[] args){

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

System.out.println(i);

}

}

}

当然也可以这样写:

public class Lesson1{

public static void main(String[] args){

int i=0;

for(;i<10;){

System.out.println(i);

i++;

}

}

}

结果一样。

12.在我们的forwhile语句中,还可以使用continue语句

当我们的程序进入for循环体中进行执行,如果满足了某一个条件,我们就希望结束这一次循环。顺序进入下一次循环的判断。

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

If(i%2==0)//如果能够整除,就是偶数

Continue;//那么就结束这次循环,也就是说下面的System语句就不再执行,而进入下一次循环,x+1,然后肯定就是奇数,就会执行System语句,也就是将奇数打印出来

System.out.println(i);
}

还要注意在if语句中等于是用两个等于号==

好的,到这里我们的程序流程语句就讲完了。

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------



原创粉丝点击