最近在看JAVA教学的视频,觉得老师讲的很好,同时借用源代码还有笔记来撰写本系列博客,记录自己的学习内容,同时也供看到的人学习。
回家的前两天正值周末,所以····嘿嘿懂得~
今天继续写第5篇,从这篇开始就会涉及一些实用的训练题,这些在学习中是很必要的哦~
上篇的末尾写到了while循环,那么这篇开头就介绍一下最最常用的for循环,for循环其实学过C的同学再熟悉不过了,它其实相当于一种灵活的“while循环”,格式:for(内容1;内容2;内容3),1是循环变量的初始化;2是循环条件的判断;3是每次循环之后对循环变量的操作,JAVA里面的for循环和C++是完全相同的,这里就不再细介绍了。
这里来几道练习题:
<span style="font-size:14px;">/**
* while和for循环后的练习题目:用for循环输出1—1000之间能被5整除的数,且每行输出3个
*/
public class TestWhileFor {
public static void main(String[] args) {
int oddSum = 0; //用来保存奇数的和
int evenSum = 0; //用来存放偶数的和
for(int i=0;i<=100;i++){
if(i%2!=0){
oddSum += i;
}else{
evenSum += i;
}
}
System.out.println("奇数的和:"+oddSum);
System.out.println("偶数的和:"+evenSum);
for(int j = 1;j<=1000;j++){
if(j%5==0){
System.out.print(j+"\t"); //(新技能get)注意这里,"/t"为制表符,并置运算后j为字符,每个字符之间会隔开8个字符的距离
}
if(j%(5*3)==0){
System.out.println(); //每行三个,则令每遇到15的倍数则换一次行
}
}
}
}
</span>
再来一道打印小99的,要求打印格式如下:
实现代码如下:
<span style="font-size:14px;">//输出99乘法表
public class TestWhileFor02 {
public static void main(String[] args) {
for (int m = 1; m <= 9; m++) {
for (int i = 1; i <= m; i++) {
System.out.print(i + "*" + m + "=" + (i * m) + "\t");//结尾制表
}
System.out.println();//换一行
}
}
}
</span>
接下来介绍break和continue语句,这也是最常用的循环控制语句:
还有一种现在已经不太常用的continue标签,简单了解一下就好,现在的程序已经不怎么支持使用goto语句了,会造成执行的混乱:
<span style="font-size:14px;">/**
* 测试break和continue
*/
public class TestBreakContinue {
public static void main(String[] args) {
int total = 0;
System.out.println("Begin");
while (true) {
total++;
int i = (int) Math.round(100 * Math.random());
if (i == 88) {
break;
}
}
for (int i = 100; i < 150; i++) {
if (i % 3 == 0) {
continue;
}
System.out.println(i);
}
//带标签的continue,输出101—150之间的所有整数
int count = 0;
outer: for (int i = 101; i < 150; i++) {
for (int j = 2; j < i / 2; j++) {
if (i % j == 0)
continue outer;
}
System.out.print(i + " ");
}
}
}
</span>
好了,下面要介绍的,是面向对象语言里面非常重要的一个角色,那就是对象(类)的一个组成成员:方法(method)。一个方法对应于C++里面的一个函数,但是它存在以一个类中,下面是方法的详细介绍:
最后一条,关于值传递和引用传递在今后会单独列出来介绍,这里先不详述。
下面是方法的实际使用的例子(主方法是一种特殊的方法):
<span style="font-size:14px;">/**
* 测试方法
*/
public class TestMethod {
//设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。
//我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。
public static void test01(int a) {
int oddSum = 0; // 用来保存奇数的和
int evenSum = 0; // 用来存放偶数的和
for (int i = 0; i <= a; i++) {
if (i % 2 != 0) {
oddSum += i;
} else {
evenSum += i;
}
}
System.out.println("奇数的和:" + oddSum);
System.out.println("偶数的和:" + evenSum);
}
public static void test02(int a,int b,int c){
for (int j = 1; j <= a; j++) {
if (j % b == 0) {
System.out.print(j + "\t");
}
if (j % (b * c) == 0) {
System.out.println();
}
}
}
public static int add(int a,int b){
int sum = a+b;
if(a==3){
return 0; //return 两个作用:结束方法的运行(不要忽略)、返回值。
}
System.out.println("输出");
return sum;
}
public static void main(String[] args) {
test01(1000);
test02(100,6,3); //1-100之间,可以被6整除,每行输出3个。
int s = add(3,5);
System.out.println(s);
}
}
</span>
下面介绍递归,递归是计算机编程算法里面一个非常重要的基础知识,谁白了就是一个自己通过调用自己来解决问题的算法。
<span style="font-size:14px;">/**
* 测试递归算法
*/
public class TestRecursion {
static int a = 0;
public static void test01(){
a++;
System.out.println("test01:"+a);
if(a<=10){ //递归头(防止死循环,必要的)
test01();
}else{ //递归体
System.out.println("over");
}
}
public static void test02(){
System.out.println("TestRecursion.test02()");
}
public static long factorial(int n){
if(n==1){
return 1;
}else{
return n*factorial(n-1);
}
}
public static void main(String[] args) {
test01();
System.out.println(factorial(10));
}
}
</span>
看看递归示意图:
好了,这篇接到此结束了。
算算到现在也写了5篇JAVA的学习笔记了,说真的一开始的目的完全是给自己将来复习用得,但是在写的过程中我决定采用向他人介绍的行文方式,就像是面对着他人去讲解。目前这五篇的内容可以说是非常简单、基础,即使是再不热爱编程的计算机专业学生到了大二或者大三也会很熟悉这些,所以这5篇我加入的自己的主观内容很少,但是随着学习的深入,会越来越接近JAVA的精华部分,到那时我可能就会把自己的一些感悟与理解加入到blog当中与大家交流,希望看到我博客的小伙伴如果发现博客里面有介绍错误的知识点请留言指正,不胜感激!