黑马程序员---java学习要点3

来源:互联网 发布:灰色模型软件 编辑:程序博客网 时间:2024/05/19 22:58

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

好的,今天下午从14:06开始学习:

1.

函数的概念:我们把发射炮弹的代码抽取出来,然后生成一个子程序,只要在主程序中写上子程序的名字,计算机就会执行子程序里面的代码,等到子程序里面的代码执行完毕之后又会回到主程序,人后继续往下执行。

这就是函数。

函数可以用来处理很多重复性的代码,只是设置的参数不一样。

注意,函数有一个返回值。刚刚差点就出错了,我们的参数是个数,x,y。而ij是随意的。

还有,我们要注意,在使用参数的时候,经常要用到if,不要忘了判断x,y是不是大于0,这点很重要,很多参数都是非法参数。特别是像这种实物的长宽,都要判断是不是大于0

2.流程控制,包括三种类型:

顺序结构:一行一行往下执行,中间没有判断和跳转。

选择结构。其实if-else可以在只写一行的时候不用括号,但是超过了一行就需要括号了。

循环结构。

还有要注意,在if的表达式中,我们需要这样来做,比如等号==,与字符,就是&&,一定要用两个。

还有注意,一个if,里面,还可以定义很多个if

While循环就是先判断一下,然后为真就执行里面的语句,而do-while,就是不管三七二十一,先在do里面将所有的语句都执行一遍,然后再while里面有一个条件。直到到达这个条件后为止。

这边发现了一个小问题就是for循环的x++是放在表达式里面的,而while循环的x++是放在括号里面的。

3.还有要注意,我们在forwhile循环语句中,还可以使用continue语句,来结束这次循环,快速进入下一次循环。

使用continue语句来结束这次循环快速进入下一次循环。

注意,不管是在while循环还是if循环里面,都要加上x++,只是位置不一样。

4.好的,继续来学习新知识,复习了50分钟,今天要学习3个半小时,然后做习题30-40分钟即可

像这个各种类型的内存大小很难记,所以就跳过不学,而且对后面的开发,也没有多大作用。

今天一定要做3,40分钟的习题。每天坚持做。否则,我光看,不练是没有任何效果的。

接下来,我们来学习java中的数组。

就比如,我们要在java中定义100个整数变量,并求出这100个整数相加的结果,那么该怎么写这个程序呢?

class Lesson3{

public static void main(String[] args){

int x[]=new int[100];//定义100个数,注意下标是int[0]...int[100]

int sum=0;

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

sum+=x[i];

}

}

}

注意,循环里面的,下标从0开始,所以是小于100,然后里面的意思是,求和。

执行100次。注意,这个不是数字,而是说是执行100次。

5.java将内存空间分为两部分,栈内存和堆内存。

栈内存:我们前面学的,定义的变量都是放在栈内存中,这个内存只在此函数运行的时候存在,而一旦函数结束,就会被释放。

堆内存:我们用new定义的数组以及以后的一些变量都是放在堆内存中。堆内存分配的这些内存,它会由java提供的自动垃圾回收器来管理。

Int x[]=new int[100];//在堆内存中定义了一个数组,里面有100个数。

注意,我们定义数组的时候,也可以将和这个中括号卸载变量的前面,实际上,我们以后通常都会写在前面。

Int[] x=new int[100];

但是,目前数组的每个元素都初始为0,所以前面我们才会打印出这么多个0.

6.我们可以在定义数组的时候,给每一个元素赋值,这样的数组就叫做静态数组。

比如int[] x=new int[]{1,2,3};

数组中的注意事项:

空指针异常的错误。

注意数组的脚标号是它原来的位置减去1.

比如int[] x=new int[]{1,2,3,4};

     System.out.println(x[4]);

会报错,因为,x[4]已经超过了,应该是x[3];这就是数组访问越界。

注意可以写成int x[]=new int[]{1,2,3,4};

class Lesson3{

public static void main(String[] args){

int x[]=new int[100];//定义100个数,注意下标是int[0]...int[100]

int sum=0;

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

sum+=x[i];

}

}

}

//x[i],i就是x的下标,有100个。

X1,x2,x3,然后这个i就是++

就是说sum初始值是0,然后加上x0,接着再循环一次,这次的sum加上x2.

我们只要知道数组的长度,就可以了。注意循环里面的i,就是数组的脚标,也就是有多少个数。

所以,我们可以这样写:

For(int i=0;i<x.length;i++){
}

算了,况众文,这一个小时的教程学的有点浮躁了,我这次学习java是来查漏补缺的,不是像以前那样重蹈覆辙的。

明天这个再好好看看,不过,提醒一句,最重要的还是多联系,多做习题,多做项目。学完后,做一小时习题。

7.好好学,认真点,加油:

我们这节课来学习面向对象

在我们了解面向对象之前,先来了解一下面向过程,就好像想了解幸福就得了解痛苦一样。

C语言就是面向过程。

Java是面向对象的,面向对象的三大特征:

封转

继承

多态

我们这节课主要讲解面向对象的封装性。下节课讲解面向对象的继承和多态性。

类与对象:

类就是对某一类事务的描述,是抽象的,概念上的定义。而对象实际存在的该类对象的个体,因此也称为实例。

比如对象是汽车,那么汽车图纸模型就是类,类是对象的模型,对象是类的实例。

一个类可以产生出多个对象,面向对象设计的重点是类的设计。

8.注意函数就是方法。

把其抽出来作为一个函数,就是一个方法,而void方法是不需要返回值的,其他类型的方法都需要return返回值。

看一个类:

class Person{

int age;//这是成员变量

void shout(){//这是成员方法

System.out.println("my age is"+age);//成员方法可以访问成员变量,但是如果在里面再定义了一个age,就会调用里面的这个局部变量

//外面的成员变量就会被自动隐藏

}

}

对象的产生用new

比如Person person=new Person();堆内存

注意,int类型初始化值为0boolean初始化值为falsechar类型初始化值为0

我们在类中定义的成员变量不需要自己对它进行初始化,比如int age;编译器会对它进行初始化。

9.注意,比如说我们做一个项目,需要很多类,但是程序总是需要一个main方法作为启动类。这个类就是启动类,不管这个main方法放在哪里。

注意如果你在方法里面定义了一个局部变量,那么调用这个方法打印出来的就是这个局部变量的值,而不是成员变量的值,成员变量的值自动隐藏了。

class Person{

int age;//这是成员变量

void shout(){//这是成员方法

System.out.println("my age is"+age);

}

public static void main(String[] args){

Person p1=new Person();

Person p2=new Person();

p1.age=-30;

p1.shout();

    p2.age=20;

    p2.shout();

  }

}

10.对象的比较

==equals的区别

==用来比较两个变量的值是否相等

Equals使用来比较两个对象中的内容是否相等。

看一个例子:

class Person{

int age;//这是成员变量

void shout(){//这是成员方法

System.out.println("my age is"+age);

}

public static void main(String[] args){

String a1=new String("abc");

String a2=new String("abc");

String a3=a1;//内容相等

if(a1==a2)

System.out.println("true");

else

System.out.println("false");

 //注意这边用的是==,也就是说比较两个变量的首地址是否一样,如果一样那不就成一个数了,所以会打印出false

    

  }

}

如果是a1a3比较:

class Person{

int age;//这是成员变量

void shout(){//这是成员方法

System.out.println("my age is"+age);

}

public static void main(String[] args){

String a1=new String("abc");

String a2=new String("abc");

String a3=a1;//内容相等

if(a1==a3)

System.out.println("true");

else

System.out.println("false");

   

    

  }

}

结果是true。因为它们指定的是堆中的同一个地址。

11.再来看看equals方法:

比较内容是否一样。

class Person{

int age;//这是成员变量

void shout(){//这是成员方法

System.out.println("my age is"+age);

}

public static void main(String[] args){

String a1=new String("abc");

String a2=new String("abc");

String a3=a1;//内容相等

if(a1.equals(a2))

System.out.println("true");

else

System.out.println("false");

   

    

  }

}

结果是true

我们怎么来比较两个数组中的内容是否相等呢,数组中又没有equals方法。

12.如果我们程序里面有一个除数,如果外界攻击者把我们的除数改为0,那么程序不久崩溃了吗,如何让外面的攻击者不能修改类中的成员变量呢?

我们只要在成员变量前面加上一个private就可以了。那么其他类就不可以访问这个成员变量了。

Public修饰,那么这个成员就是公有的。

为了形成良好的封装性,我们一般将类的成员变量声明了私有的。

虽然是私有的,但是我们还是可以这样做来获取到这个私有变量:

Private int age;

public void setAge(int x){

Age=x;//通过这个方法给私有成员变量赋值
}

Public int getAge(){

Return age;
}

//注意,函数就是方法,上面的setAge方法的返回类型是void类型的,不需要返回,而下面的是int类型的,需要返回值。

还有注意,在循环语句中,whileforcontinue是用来终止此次循环,迅速进入下一个循环。

而在选择语句中return是用来终止的,return后面的代码都不用执行了。



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

原创粉丝点击