基础
03-01-语句(while)
Tip:循环体结构
1.代表语句:while,do while,for
while 语句格式:
while(条件表达式){
执行语句;
}
do{
执行语句;
}while(条件表达式);
do while的特点:条件无论是否满足,循环体至少被执行一次。
for格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句;
}
注意:
(1) for里面的两个表达式运行的顺序,初始化表达式只读取一次,判断循环条件,为真就执行循环体,然后再执行循环体后的操作表达式,接着继续判断循环条件,如此重复,直到条件不满足时退出循环。
(2) while与for可以互换,区别在于for为了循环而在for结构体内定义的变量在for循环结束时就在内存中释放,而while循环用于条件判断使用的变量在循环结束后还可以继续使用。
(3) 最简单的无限循环格式:while(true){…},for(;;){…},无限循环的原因是并不知道循环多少次,而是根据某些写条件,来控制循环。
一个可以运行的for循环示例:
int x = 1;
for(System.out.println(“a”);x<3;x++,System.out.println(“c”)){
System.out.println(“d”);
}
结果:
adcdc
总结:
什么时候使用循环结构?
当对某些语句执行很多次时,就可以使用循环结构。
03-06-语句(for语句练习-累加计数器)
Tip:练习。
1~100之间7的倍数的个数,并打印。
思路分析:...//略
实现步骤:...//略
代码实现:如下
class Fortest{
public static void mai(String[] args){
for(inti=1,count=0;i<=100;i++){
if(i%7==0){
count++;
System.out.print(i+" ");
}
if(i==100){
System.out.println();
System.out.println("1~100以内能被7整除的数共"+count+"个");
}
}
}
}
运行结果:
7 14 21 28 35 42 49 56 6370 77 84 91 98
1~100以内能被7整除的数共14个
上述代码定义的变量虽然在for循环结构体内,for循环结束后,变量就在内存中释放了,但是在循环体内却要增加了if语句判断来达到打印效果,这样就会大大降低代码的运行效率。
如果修改为下面的代码:
class Fortest{
public static void mai(String[] args){
int count = 0;
for(int i=1;i<=100;i++){
if(i%7==0){
count++;
System.out.print(i+" ");
}
}
System.out.println();
System.out.println("1~100以内能被7整除的数共"+count+"个");
}
}
这段程序的运行效率就比上一个程序的运行效率显著提升了,但有一个小缺憾就是,变量count未在for循环结束时在内存中释放。
总结:
在定义循环体结构时,循环体中需要的变量既可以定义在循环体外部,又可以定义在循环体内部的,要根据具体场合,在内存开销和运行效率之间有一个取舍。
03-08-语句(for嵌套练习)
打印正直角三角形。
代码:
for(inti=1;i<=5;i++){
for(int j=1;j<=x;j++){
System.out.println(y);
}
System.out.println();
}
03-09
打印9*9乘法表。
代码:
for(inti=1;i<=9;i++){
for(int j=1;j<=x;j++){
System.out.print(y+”*”+x+”=”+y*x+”\t”);
}
System.out.println();
}
03-10-语句(break-continue)
Tip:其他流程控制语句
break(跳出),continue(继续)
break语句:应用范围:选择语句和循环语句。
continue:运用于循环语句。
a.break语句结束循环体循环。
b.continue语句结束本次循环继续下次循环。
03-11-函数(概述)
1.函数(或方法)的定义:定义在类中的具有特定功能的一段独立小程序。
2.函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...){
执行语句;
return 返回值;
}
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该值会返回给调用者。
3.注意:
(1)函数中只能调用函数,不可以在函数内部定义函数。
(2)定义函数时,函数的结果应该返回给调用者,交由调用者处理。
03-13-函数(应用)
1.如何定义一个函数?
(1)既然函数是一个独立的功能,那么该函数的运算结果是什么应该先明确。
(2)在明确定义该功能的过程中是否需要未知的内容参与运算。
明确函数的参数列表(参数的类型和参数的个数)。
需求:定义一个功能,完成3+4运算,并将结果返回给调用者。
分析:
(1)明确功能的结果,是一个整数的和。
(2)在实现该功能的过程中是否有位置的内容参与运算,没有。
其实这两个功能就是在明确函数的定义。
(1)是在明确函数的返回值类型。
(2)明确函数的参数列表(参数的类型和参数的个数)。
代码参考:
public static intadd(int a,int b){
return a+b;
}
public static voidadd(int a,int,b){//这个功能定义思想有问题,为什么呢?因为只为完成加法 //运算,至于是否对和打印,那是调用者的事,不要再该功能中完成。
System.out.println(a+b);
return ;//可省略不写
}
03-15-函数(重载)
Tip:函数的重载
1.重载的概念:在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
2.重载的特点:与返回值类型无关,只看参数列表。
3.重载的好处:方便阅读,优化了程序设计。
4.重载示例:
返回两个整数的和:
int add(int x,int y){return x+y;}
返回是三个整数的和:
int add(int x,int y,int z){return x+y+z;}
返回两个double数的和
double(double x,double y){return x+y;}
5.什么时候重载呢?
当定义的功能相同,但参与运算的未知内容不同,那么这时定义了一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数。
03-16-函数(重载练习)
void show(int a,char b,double c){},判断下面那些函数重载?
a.
void show(int x,char y,double z){}//没重载,和原函数一样。
b.
int show(int a,double c,char b){}//重载,因为参数类型不同。
注意:
(1)重载和返回值类型没有关系。
(2)参数列表的参数是有顺序之分的。
c.
void show(int a,double c,char b){}//重载,因为参数类型不同。
d.
boolean show(int c,char b){}//重载,因为参数个数不同。
e.
double show(int a,char y,double z){}//注意,这类函数不可以和给定函数同时存在一个类 //中。
03天-17-数组(概述-内存结构)
Tip:数组的定义
1.概念:
同一种数据类型的集合。其实数组就是一个容器。
2.数组的好处:
可以自动给数组中的元素从0开始编号,方便操作这些元素。
3.格式
格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例: int[] arr = new int[5];
格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,...};
int[] arr = newint[]{3,5,1,7};
int[] arr ={3,5,1,7};
4.常见代码示例
in[] arr = newint[3];
System.out.println(arr[3]);
/*编译通过,运行时错误:ArayIndexOutOfBoundsException:3,操作数组时,访问到了数组中不存在的角标。
*/
int[] arr = newint[3];
arr = null;
System.out.println(arr[1]);
/*编译通过,运行时出错:NullPointerException,空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体。
*/
Tip:内存结构
Java程序在运行时,需要在内存中分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都会有特定的处理数据方式和内存管理方式。
1.栈内存
用于存储局部变量,但数据使用完,所占空间会自动释放。
2.堆内存
数组和对象,通过new建立的示例都会存放在堆内存中。
堆内存的三个特点:
a.每一个实体都有内存地址值。
b.实体中的变量都有默认的初始值。
c.实体不在被使用,会在不确定的时间内被垃圾回收器回收。
3.方法区,本地方法区,寄存器//本节未讲
4.堆内存中实体默认的初始化值:
int 0 double 0.0 float 0.0f boolean false char ‘\u000’
5.分析变量和数组在内存中的存放形式,如下图: