Java基础03天 学习笔记_循环|函数|数组
来源:互联网 发布:北京师范网络教育官网 编辑:程序博客网 时间:2024/04/28 16:15
001循环结构 while
循环结构:
While ,do while , for
写循环语句时要注意: 1.初始值,2.条件判断,3.让初始值变化以便能跳出循环,4.执行语句
002 do while
Do {语句,增量 }; while(判断)
Do while的特点是无论怎么样语句都会执行一次。即使条件不满足
003 for
For (初始化表达式;循环条件表达式;循环后的表达式)
{
执行语句;
}
for的优势在for内部创建变量,跳出循环后释放。
循环条件满足则进入执行语句,不满足跳出循环。
for执行顺序: 1.初始化--2.循环条件--3.执行语句---4.循环后----5.循环条件---6.执行语句---7.循环后表达---…
初始化语句只执行一次
004 while和 for的不同
While和 for,初始变量的作用域不同,for的变量在for循环结束后在内存中释放,所以下图编译时会报找不到变量的错误。
什么时候使用循环结构:
当对某些语句执行很多次时,就是用循环结构。
005循环语句的其他特点
会报错,因为在循环条件中我们不能得到一个布尔类型的值,即不真不假,程序无法继续。
除了循环条件外,其他3部分只要是合法的表达式就可以~
可执行多条语句,可以用逗号隔开~依然管用。强大。
如for (int x =0 ,y =8 ; x<3; x++,y++)
无限循环的最简单表达:
for (;;){} for的条件默认为真
While(true){}
006循环练习
1:获取 1到10的和,并打印
题1思路:
一定要明确哪些语句需要参与循环,哪些不需要
定义变量用于存储不断变化的和
定义变量,记录不断变化的被加数
定义循环,重复加法的过程
Log:第一次由于没有在for循环的初始值中用 int x=1;而是直接用x =1;导致
结果调整后正确输出了
2: 1-100之间7的倍数的个数,并打印
题2思路:
先对1-100进行遍历,通过循环 for
在遍历的过程中,定义条件,只对7的倍数进行操作。
定义一个变量来记录7的倍数的个数,但要注意变量的作用域。 For 以外。
Log:一次通过。
练习总结。
累加思想:比如求和,字符串的叠加。通过变量记录每次变化的结果,再通过循环的形式进行累加动作。
计数器思想:通过一个变量记录数据的变化(需要if判断)for内的if来实现。 比如在范围内有多少个什么什么,就需要想到计数器。
007 008 009for循环嵌套
比如for中嵌套if语句
循环嵌套: for for嵌套
****
****
****
对于打印长方形,外部循环控制行数,内部循环控制的是每一行的列数,也就是一行的元素。
练习
打印下列的图形
1.
*****
****
***
**
*
2.
*
**
***
****
*****
思路:有行有列,使用循环的嵌套,长方形的图形是行列固定,而需求中的图形是行列中有相应的关系
题1,x=1, y=5, x=2, y=4 ,
外: x=,x<=5,x++
内: y=5,y>=x ,y--
Or
外 x=1,x<=5,x++
内 y=x , y<=5 , y++
题2, x=1 ,y=1 ,
Log , 注意System.out.print("*");中不要用println,而且要在外循环中加入换行。
小规律:图像的尖朝上,可以改变循环条件,让条件随着循环变化
尖朝下,可以改变初始化的值,让初始化的值随着外循环变化。
JerryJava循环练习4
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
....
打印九九乘法表
思路
被乘数递增: 1, 2,3...
乘数的个数与被乘数相关,从1到等于被乘数
所以被乘数为外循环,乘数为内循环,且尖朝上,则需要关联循环条件。 y<=x
另外注意输出的格式,和输出的换行。
Log:一次通过
010 break - continue
Break跳出 结束本层循环结构
Continue跳出一次循环,还在当前循环体内
常见的是用if语句来控制 break,如果达到了某一个条件,则选择跳出。
If(x==1)
Break;
可以给循环起名字~。~
Continue只能用于循环结构
Continue下面的语句执行不到。所以也需要用if来控制。
For (intx=1;x<=10;x++)
{
If(x%2==1)
Continue;
System.out.println("x="+x);
}
最后只打印的是偶数。
011练习
JerryJava循环练习5
打印一个等腰三角形。
思路
外循环固定, x=1 , x<=5 , x++
内循环其实是两个组成的,一个是尖朝下的打印空格,一个是尖朝上的星号,
尖朝下则关联初始值,尖朝上则关联条件。
内循环1:y=x;y<5;y++ -----打印空格
2: y=1;y<x;y++ ------打印星号和一个空格
打印一次换行
Log:在第一次编写的时候又忘记在初始值中int y=x了
修正后结果正确
一个for循环中嵌套了两个并列的for
012函数特点,定义
函数又称为方法,两个一样的。
函数提高代码的复用
函数:具有特定功能的一段独立小程序。
相同的部分进行抽取,封装成一个独立的功能。
函数定义的格式:
修饰符返回值类型函数名(参数类型形式参数1,参数类型形式参数2…)
{
执行语句
Return返回值
}
Return是函数的结束
谁调用return给谁
IntgetResult (int num)
{
Return num*3+5;
}
添加修饰符
Public staticint getResult (int num)
{
Return num*3+5;
}
函数定义,函数执行
函数只有被调用才会执行
getResult(4);就是调用了
Int x =getResult(4);
如果函数的返回值不为Void,则都需要写return语句作为函数的结束。
012 013函数应用
编写功能是主要任务: 函数是最小的功能单元。
主函数的功能就一个,调用其他的函数。不要把所有的功能都放在Main中,不得体。
如何定义一个函数:?
1.明确结果,
返回值类型
2.该功能的过程是否需要未知内容参与
参数列表
第一步:
Publicstatic int getSum()
{
Return 3+4;
}
进化,第二步:
Publicstatic int getSum(int x , int y )
{
Return x+y;
}
/*
需求:判断2个数时候相同
1.结果是boolean
2.功能中有2个整数
*/
Publicstatic boolean campare(int a , int b)
{
//if(a==b)
//Return true;
//return false;
return a==b;
}
如果返回值是void类型的函数,是不能在输出语句中输出的
写函数的时候,除非需要,否则不要在函数输出语句
是否进行打印操作是调用者的事情。
014函数练习
1.打印矩形
2.99乘法表
===========
/**
JerryJava函数练习2
1.打印矩形
2.99乘法表
*/
class DemoFunc_2{public static void printSq (int row , int col){for (int x=1;x<=row ;x++ ){for (int y=1;y<=col ;y++ ){System.out.print("*");}System.out.println("");}}public static void printnn(){for (int x=1;x<=9 ;x++ ){for (int y=1;y<=x ;y++ ){int z=y*x;System.out.print(y+"*"+x+"="+z+" ");}System.out.println("");}}public static void main(String[] args) {printSq(7,7);printnn();}}
015 016重载和练习 overload
重载:在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者类型不同即可
重载和且仅仅和参数列表相关,功能一致,功能名称就可以一样啦~
/**
JerryJava重载练习1
加法重载
*/
class DemoOverload_1{public static int add (int x , int y){return x+y;}public static int add (int x , int y,int z){return x+y+z;}public static void main(String[] args) {System.out.println(add(3,4));System.out.println(add(3,4,7));}}
99乘法表的改进,进一步提高代码的复用
这个思路要记住
即, 在一个函数中调用另外一个函数,达到提高代码复用性的目的
public static void printnn(int num){for (int x=1;x<=num ;x++ ){for (int y=1;y<=x ;y++ ){int z=y*x;System.out.print(y+"*"+x+"="+z+" ");}System.out.println("");}}public static void printnn(){printnn(9);}
重载和返回值类型没有关系。
017数组的概念定义内存结构
数组是同一个数据类型的集合,其实一个数组就是一个容器。
数组,自动编号。方便操作。数组的编号从0开始。
定义一个数组:
格式
元素类型[]数组名 = new元素类型[元素的个数或者数组长度];
int[] x = new int[3];
new是在内存中开辟空间~ x是一个引用类型,(数组,类,接口)
Java在内存中开辟了5片空间来进行自己数据的存储
栈内存(局部变量,数据用完了释放)
堆内存(数组和对象,通过new建立的实例都存在堆内存中),每一个实体都有内存地址,实体中的变量都有默认的初始化值,实体不在被使用,会在不确定的时间被回收。
方法区
本地方法区
寄存器
凡是局部变量都是栈内存中的,比如 int [] x =new int[3];
其中的x就是栈内存变量,他会随着函数的释放而消失。
而new int[3]则在堆内存开辟了一个空间,
每一个堆内存的实体都有一个地址,上面的语句意为,将new int[3]这个堆内存中的实体的首地址值赋值给栈内存的x变量,
即x指向了这个数组,或者x引用了这个数组。所以是引用类型。
堆内存中实体的两个特点: 1.有地址,2有初始值(int 0 , double 0.0 , float 0.0f , boolean false...),3内存垃圾回收机制
x[0]=22;
x=null; (斩断了链接)
问题来了,x不引用该数组了,该数组失连了,怎么办?
答,当一个实体在堆内存中没有任何的引用使用他的话,Java虚拟机就使其为垃圾,启动垃圾回收机制,不定时的清除。
比起C++真的好多了~自动内存回收机制真是机智啊~
栈:自动释放
堆:垃圾回收
int[] x :建立一个整形数组类型的引用变量 x
new int[3]:在堆内存中建立一个长度为3的整形数组,且初始值为默认
int []x = new int[3]:建立连接:将该整形数组的首地址值赋给x整形数组引用变量
堆内存的实体,可以在栈内存中有多个引用。
只要有New,就会开辟一个新的空间!
int [] x= new int[3]
int [] y=new int [3]
x , y值不同啊,因为他们是不同数组的引用~
- Java基础03天 学习笔记_循环|函数|数组
- Java基础视频教程第03天_学习笔记之循环结构、函数
- JAVA基础第三天学习日记_循环语句、函数、数组
- java学习笔记:Java语法基础2(循环,函数,重载,数组,方法)
- 黑马程序员 Java基础学习笔记3 循环和数组
- java基础学习_数组
- 黑马程序员_java基础学习笔记03_函数以及数组知识
- Java基础04天 学习笔记_数组进阶(数组排序,二分查找,进制转换,二维数组)
- Java基础视频教程第04天_学习笔记之数组常见操作
- JAVA学习笔记_基础
- Java基础03:循环结构;函数;重载;数组
- Java基础4--循环--函数--数组
- JAVA基础第四天学习日记_数组
- Java基础学习5_数组
- java 从零开始,学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)
- 03 Java基础_条件、循环
- Java基础数组学习笔记
- Java学习笔记 Day04 (for循环嵌套、函数以及函数重载、数组)
- java中的IO整理
- 《Linux内核设计与实现》读书笔记(十九)- 可移植性
- 酒店客户会离开了德国可干
- 《Linux内核设计与实现》读书笔记(二十)- 补丁, 开发和社区
- 看见的是改变看法就是克己奉公
- Java基础03天 学习笔记_循环|函数|数组
- c# ini文件操作
- hibernate使用c3p0数据源
- 阿里2015 在线笔试
- JAVA 学习第三天
- 开源 免费 java CMS - FreeCMS2.1 会员3.9我的收藏
- epoll使用详解(精髓)
- 安卓 seekbar 图片自适应
- 一位好的Web前端开发工程师在知识体系上既要有广度