JAVA 语言基础组成
②、循环结构:while , dowhile ,for 。当要对某些语句执行很多次时,就使用循环结构。
while语句格式:[定义初始化表达式]
while(条件表达式)
{
【循环体】执行语句;
}
do while 语句格式:do
{
执行语句;
}while(条件表达式);
do while特点是条件无论是否满足,循环体至少被执行一次。
for 语句的格式:for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
【循环体】执行语句;
}
③、for的初始化表达式,只运行一次,然后会运行循环条件表达式,执行语句,循环后的操作表达式,在这三条语句中循环运行,直至不符合条件,结束for循环。
for与while的区别:变量的作用域不同(初始化变量的位置不同),对于for来讲,如果将用于控制循环的增量定义在for语句中,那么该变量只在for语句内有效,for语句执行完毕,该变量在内存中被释放。for和while可以进行互换,如果需要定义循环增量,用for更合适。
for的初始化表达式和循环后的操作表达式可以省略不写。
无限循环的最简单表达形式:
for( ; ;){ }
while(true){ }
累加与计数器思想:例Day33.java和Day34.java
Day33.java
/*
获取1-10的和,并打印
*/
/*其实这就是累加思想
原理:通过变量记录住每次变化的结果
通过循环的形式,进行累加动作
*/
class Day33
{
publicstatic void main(String[] args)
{
intx=1,sum=0;
while(x<=10)
{
sum=sum+x;
x++;
System.out.println("sum="+sum); //明确哪些语句参与运算,哪些不需要
}
System.out.println("sum="+sum);
//用for语句也可以
intsum1=0;
for(inty=1;y<=10;y++)
{
sum1+=y;
System.out.println("sum1="+sum1);
}
System.out.println("sum1="+sum1);
}
}
Day34.java
/*
把1-100之间,7的倍数的个数,并打印
思路:1、先对1-100进行循环(遍历)通过循环的形式
2、在遍历过程中,定义条件,只对7的倍数进行操作
3、因为7的倍数不确定,只有符合条件,就通过一个变量来记录这个变化的次数
步骤:
1、定义循环语句,选择for语句
2、在循环中定义判断,只要是7的倍数即可,使用if语句,条件: 7的倍数 x%7==0;
3、定义变量,该变量随着7的倍数的出现而自增
*/
/*
计数器思想:通过一个变量记录住数据的状态变化
也是通过循环完成
*/
class Day34
{
publicstatic void main(String[] args)
{
intcount=0;
for(intx=1;x<=100;x++)
{
if(x%7==0)
//System.out.println("x="+x);
count++;
}
System.out.println("count="+count);
}
}
尖型及乘法表的例子:Day35.java和Day36.java
Day35.java
/*
嵌套语句,就是语句中有语句,也就是大圈套小圈
发现图形有很多行,每一个行有很多列
*/
class Day35
{
publicstatic void main(String[] args)
{
for(intx=0;x<3;x++)
{
for(inty=0;y<5;y++)
{
System.out.print("*");
}
System.out.println(); //该语句只有换行的作用
}
System.out.println("-------------------");
/*
外循环表示的列,内循环表示的行
*****
*****
*****
*/
intz=0;
for(intx=0;x<5;x++)
{
for(inty=z;y<5;y++)
{
System.out.print("*");
}
System.out.println();
z++;
}
System.out.println("-------------------");
//同一个结果,有多种方法
for(intx=0;x<5;x++)
{
for(inty=x;y<5;y++)
{
System.out.print("*");
}
System.out.println();
}
System.out.println("-------------------");
//所得结果:
*****
****
***
**
*
intw=5;
for(intx=0;x<5;x++)
{
for(inty=w;y<6;y++)
{
System.out.print("*");
}
System.out.println();
w--;
}
//所得结果:
*
**
***
****
*****
}
}
Day36.java
/*
类似这类的规律:*
**
***
****
*****
尖朝上,可以改变条件,让条件随着外循环变化
尖朝下,可以改变初始化值,让初始化随着外循环始变化
*/
class Day36
{
publicstatic void main (String[] args)
{
for(intx=1;x<6;x++)
{
for(inty=1;y<=x;y++)
{
System.out.print("*");
}
System.out.println();
}
System.out.println("-------------------");
/*类似的数字形式
1
12
123
1234
12345
*/
for(intx=1;x<6;x++)
{
for(inty=1;y<=x;y++)
{
System.out.print(y);
}
System.out.println();
}
System.out.println("-------------------");
/*九九乘法表
1*1=1
1*2=22*2=4
1*3=32*3=6 3*3=9
*/
for(intx=1;x<=9;x++)
{
for(inty=1;y<=x;y++)
{
System.out.print(y+"*"+x+"="+y*x+"\t"); //\t是制表格符
}
System.out.println();
}
}
}
④、其他流程控制语句
break(跳出),continue(继续)
break语句:应用范围:选择结构和循环结构。
continue语句:应用于循环结构
注意:①、这两个语句离开应用范围,存在是没有意义的
②、这两个语句单独存在下面都不可以有语句,因为执行不到
③、continue语句是结束本次循环继续下次循环
④标号的出现,可以让两个语句作用于指定的范围
7、函数:
函数就是定义在类中的具有特定功能的一段独立小程序。函数也称为方法。
格式:
修饰符 返回类型函数名(参数类型 形式参数1,参数类型 形式参数2,……)
{
执行语句;
return返回值;
}
返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该值会返回给调用者。
函数的特点:定义函数可以将功能代码进行封装;便于对该功能进行复用;函数只有被调用才会被执行;函数的出现提高了代码的复用性;对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。
注意:函数只能调用函数,不可以在函数内部定义函数;定义函数时,函数的结果应该返回给调用者,交给调用者处理。
如何定义一个函数呢?
答:①、既然函数是一个独立的功能,那么该功能的运算结果是什么先明确。
②、在明确的定义该功能的过程中是否需要未知的内容参与运算,也就是明确函数的参数列表(参数的类型和个数)
函数的重载(overload)
重载的概念:在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表。重载方便阅读,优化了程序设计。
注意:参数是有顺序的,而且重载和返回值类型没关系。如果参数类型相同,形参名字不同,仍然是相同的参数。
例如:voidshow(int a,char b,double c){}
int show(int a,double c,char b){} //重载,参数类型不同
double show(int x,char y,double z){} //没有重载
8、数组
定义:同一种类型数据的集合。数组就是一个容器
优点:可以自动给数据中的元素从0开始编号,方便操作这些元素。
格式1:
元素类型【】 数组名=new 元素类型【元素个数或者数组长度】;
如:int[ ] arr =new int[5];
格式2:
元素类型【】 数组名=new 元素类型【】{元素,元素,……};
int[ ] arr = new int [ ]{3,5,1,7};
int[ ] arr ={3,5,1,7};
内存结构:Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
栈内存:用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存:①、数组和对象,通过new建立的实例都存放在堆内存中。
②、每个实体都有内存地址值。
③、实体中的变量都默认初始化值
④、实体不在被使用,会在不确定的时间内被垃圾回收器回收
方法区,本地方法区,寄存器