---------------------- <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.还有要注意,我们在for和while循环语句中,还可以使用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类型初始化值为0,boolean初始化值为false,char类型初始化值为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
}
}
如果是a1和a3比较:
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类型的,需要返回值。
还有注意,在循环语句中,while,for,continue是用来终止此次循环,迅速进入下一个循环。
而在选择语句中return是用来终止的,return后面的代码都不用执行了。
---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------