java基础(二)

前言:通过java基础(一)的学习基本上java的基本框架和基本命名差不多已经掌握,以及简单的基本逻辑运算,接下来我们开始对一些循环和调用进行一些研究与掌握,反正不论怎样,java这门语言要不断地敲打代码,一有时间就敲,正所谓熟能生巧。希望我的方法能对java的学习有所帮助。


循环语句之while循环!!!!!!重点
  
   格式:

    基本格式:
   while(条件表达式){
    循环语句体;
    }
     扩展格式:(优于基本格式)
      初始化语句 ;
      while(条件表达式){
      循环体语句;
      步长语句;
      }
    执行流程:

     1)初始化语句对变量进行赋值,如果满足条件表达式,那么执行循环体语句,执行步长语句

                2)继续判断是否满足条件

                3) 满足条件,继续执行循环体语句,步长语句---->当满足不足条件为止结束

while循环和for循环的区别?
 
   1)如果从内存角度考虑,for循环要优于while循环,for循环语句执行完毕之后,变量会及时被GC垃圾回收期回收掉
   while循环,它可以去访问循环语句中的变量
   2)根据具体需求具体分析,
   如果循环次数明确的情况下,应用for循环  
   如果不知道要循环多少次,应该去使用while循环

   需求:while的练习。

public class WhileDemo2 {
	
	public static void main(String[] args) {
	
		int j = 1 ;
		while(j<=5) {
			System.out.println("我爱靳东");
			j ++ ;
		}
		System.out.println("j:"+j);
	}
}

循环语句结构do-whle的第三种:

  基本格式
  do{
   循环体语句
   }whiel(判断条件语句) ;
扩展格式:
   初始化语句;
   do{
   循环体语句;
   控制体语句;(步长语句)

   }while(条件判断语句) ;

循环结构语句
   for循环,while循环,do-while循环,他们之间的区别?
 
   do-while和前两者之间最大的区别:
   循环体语句至少执行一次
  

  实际开发:优先考虑 for循环,其次while循环,最后,do-while

需求:do-while的练习:

public class DoWhileDemo2 {

	public static void main(String[] args) {
		
		do {
			System.out.println("我们爱Java...."); //循环体语句至少执行一次
			j++ ;
		}while(j<=5) ;
	}
}

 switch语句的格式:重点

 switch(表达式){

   case 1:

语句1;   break ;

 case 2:

  语句2;  break;

 case 3:

  语句3;  break;

 ....

 default:

  语句n+1; break; 

  }

 执行流程:

     case语句中的值1和表达式中的值比较,如果一致,执行语句1

     如果不一致,case 2,再进行比较,如果椅子,执行语句2

       ....     

       如果上述都不一致,执行default中的语句

  格式的解释:

  switch:当前是一个选择结构语句,它的作用和if语句是一样

  case语句:它后面的值是和表达式进行比较

  break:表示结束当前switch语句

  default:是和if语句中的else意识时候一样的,如果条件都不成立,执行default中的语句

   

       

 面试题:

      byte可以用在switch语句的表达式?

 *    long可以作为switch语句的表达式?

 *    String可以作为switch语句的表达式?

面试题答案: switch语句后面的表达式:能跟的类型:byte,short,int,char

                   jdk5以后,可以跟枚举

                   jdk7以后,可以String类型  

  switch练习加前面的键盘录入训练

 需求:键盘录入数据,

      如果是1,输出星期一

      如果是2,输出星期二

     ....

     如果是7,输出星期日      

  注意:

写代码:  关联不大的逻辑中间用空行隔开

public class SwitchDemo {

public static void main(String[] args) {

//1)创建键盘录入对象

Scanner sc = new Scanner(System.in) ;

//2)接收数据

System.out.println("请输入一个数据:");

int week = sc.nextInt() ;

//使用switch语句

switch(week) {

case 1:

System.out.println("星期一");break ;

case 2:

System.out.println("星期二");break ;

case 3:

System.out.println("星期三");break ;

case 4:

System.out.println("星期四");break ;

case 5:

System.out.println("星期五");break ;

case 6:

System.out.println("星期六");break ;

case 7:

System.out.println("星期日");break ;

default:

System.out.println("您输入了非法数据...");break ;

}

}

}

关于switch语句中的注意事项:

 1)case语句的后面只能跟常量(根据具体的需求),不能跟变量!    javascript中的case后面是可以跟变量并且还可以表达式

 2)default语句可以在switch语句中的任何位置,不影响代码执行,如果是在语句中,那么break最好带上

 3)建议把break带上,否则会造成一个现象:case穿透!

 switch语句的结束条件:

 1)语句break语句结束

 2)执行默认执行到末尾语句结束

 5)case语句的后面是冒号,表示和switch语句中的表达式进行比较

 6)跳转控制语句: break,continue,retrun (后面讲)


for循环嵌套:

  for(){

 *for(){

  }

  }

 一.需求:在控制台输出45列的 *

  *****

  *****

  *****

  *****

public class ForForDemo {

public static void main(String[] args) {

//最原始的做法:

System.out.println("*****");

System.out.println("*****");

System.out.println("*****");

System.out.println("*****");

System.out.println("-------------------------");

//优化改进:

//第一行

//每一行是5个*,for遍历将5个*打印出来

for(int x = 1 ; x <=5 ; x ++) {

System.out.print("*");  //让*处于同一行ln去掉

}

System.out.println();

//第二行:

//每一行是5个*,for遍历将5个*打印出来

for(int x = 1 ; x <=5 ; x ++) {

System.out.print("*");  //让*处于同一行ln去掉

}

System.out.println();

//第三行:

//每一行是5个*,for遍历将5个*打印出来

for(int x = 1 ; x <=5 ; x ++) {

System.out.print("*");  //让*处于同一行ln去掉

}

System.out.println();

//第四行:

//每一行是5个*,for遍历将5个*打印出来

for(int x = 1 ; x <=5 ; x ++) {

System.out.print("*");  //让*处于同一行ln去掉

}

System.out.println();

System.out.println("-------------------------");

//在进行改进:重复度高,优化

for(int x = 0 ; x <4; x ++) {//控制行数

for(int y = 0 ;y<5; y ++) {//控制列数

System.out.print("*");

}

System.out.println(); //换行

}

}

}

二.需求:请输出下列的形状

*

**

***

****

*****

public class ForForDemo2 {

public static void main(String[] args) {

//先输出 5行5列的*

for(int x = 0 ; x <5 ; x ++) {//行

for(int y = 0 ; y < 5 ; y++) {//列

System.out.print("*");

}

System.out.println();

}

System.out.println("-------------------------");

//5行5列可以实现,现在需求,列数在发生变化

//第一行   1列    y = 0 ; y<=0 ;y++

//第二行   2列    y = 0 ; y <=1 ; y++

//第三行  3列    y = 0 ; y <=2 ; y ++

//第四行  4列    y = 0 ; y <= 3 ; y ++

//第五行 5列   y = 0  ; y <=4 ; y ++

//看规律:列数的变量刚好能去到 x的值=0,1,2,3,4

for(int x = 0 ; x < 5 ; x ++) {//行

for(int y = 0 ;y<=x ; y++) {//列

System.out.print("*");

}

System.out.println();

}

}

}

需求:99乘法表

  1*1 =1;

  1*2 = 2; 2*2 = 4

  1*3 = 3 ;2*3 = 6

  1*4 = 4 ;2*4 = 8 ......

 ... 

public class ForForDemo3 {

public static void main(String[] args) {

//for循环嵌套,完成*形状

for(int x = 0 ; x <9 ; x ++) {//行数

for(int y = 0 ; y <=x ; y++) {//列

System.out.print("*");

}

System.out.println();

}

System.out.println("------------------------------");

//为了保证使用数据,从1开始

for(int x = 1 ; x <= 9 ; x ++) {//行数

for(int y = 1 ; y <=x ; y ++) {//列数

System.out.print(y+"*"+x+"="+(y*x)+"\t");

}

System.out.println();

}

}

}

 正则表达表达式

 转义字符:

 x字符,x代表任意字符 

 '\t' 制表符

 'r'  回车符

 '\n' 换行

 continue:继续的意思,跳出当前循环,直接进入一次循环

 continue:单独是不能使用的,在循环语句中使用多 

  跳转控制语句:

  retrun  :方法的返回值 ,会带回一个结果

  面试题:

  breakcontinue的区别?

  笔试题

for(int x=1; x<=10; x++) {

if(x%3==0) {

//在此处填写代码

}

System.out.println(“Java基础班”);

}

我想在控制台输出2:Java基础班“

break;

我想在控制台输出7:Java基础班“

continue;

我想在控制台输出13:Java基础班“

System.out.println(Java基础班”);


用循环的方法来完成一些问题:

一.需求:1~10之间的和

  分析: 0 + 1 = 1;1 + 2 = 3 ;3 + 3 = 6 ;6 + 4 = 10 ;10 + 5 = 15  .....

  求和思想:

    1)最终结果变量

    2)for循环去完成

     定义两个加数

       第一个加数用来记录之前数据的所有的和

       第二个加数,它的值在变化(1,2,3,4,5...10)

   二.在控制台输出所有的"水仙花数"

 分析:

    完成这个需求,需要知道什么是"水仙花数"   

    水仙花数:三位数:每个位上的数据的立方和=数据本身

    153 = 1*1*1+5*5*5+3*3*3 = 1 + 125 + 27

     1)水仙花指的是三位数,告诉我们一个范围,for循环控制范围

     2)如何获取每个位上的数据

      

     举例:

      个位:153%10 3

      十位:153/10%10    5

      百位:153/10/10 %10   1

    获取到了每个位上的数据    

    3)满足条件:假设当前变量和ge*ge*ge+shi*shi*shi+bai*bai*bai 进行比较,如果相同的话,就可以输出这个数据

package org.westos_constant;

public class shuixianha {
/**水仙花数:三位数:每个位上的数据的立方和=数据本身
 *    153 = 1*1*1+5*5*5+3*3*3 = 1 + 125 + 27 
 *    
 * @param args
 */

public static void main(String[] args) {
	int count=0;
	for(int i=100;i<=999;i++) {
		 int ge=i%10;
		 int shi=i/10%10;
		 int bai=i/10/10%10;
		 
	if(i==(ge*ge*ge+shi*shi*shi+bai*bai*bai)) {
	count++;
		System.out.println("水仙花数分别是:"+i);
	 }

	
	 }
	System.out.println("水仙花的个数是:"+count);
}
}

三.再输出台输出满足如下条件的五位数

十位等于千位

各位等于万位

个位+十位+千位+万位=百位

分析:

5位数告诉一个范围

获取每一个位数数据

针对条件进行判断

输出

public class ForTest3 {

public static void main(String[] args) {

//5位数告诉一个范围

for(int x = 10000; x <=99999; x ++) {

//	获取每一个位数数据

int ge = x %10 ;

int shi = x /10 %10;

int bai = x /10/10 %10 ;

int qian = x /10/10/10 %10 ;

int wan = x /10/10/10/10 %10 ;

//	针对条件进行判断

//个位+十位+千位+万位=百位

if((ge==wan) && (shi==qian) &&(ge+shi+qian+wan==bai)) {

System.out.println("满足条件的五位数是:"+x);

}

}

}

}

函数方法概念:完成特定功能的代码块

 方法的格式: 形式参数

 public static  返回值 方法名(参数类型变量1,参数类型变量名){

 return ...

  }

 方法格式的解释:

 public static:方法是静态的,并且是公共的方法  (今天写方法,public static)

  返回值(数据类型)根据具体的需求,返回什么类型,用什么样的数据类型结束

  方法名:给当前代码块起名字,命名规则:单个单词:字母全小写 多个单词:第一个单词全部小写,第二个单词开始每个单词首字母大写

  return: 将当前代码的计算的结果,返回给调用者

   有返回值类型的方法:

  方法调用:

     1)单独调用

                           单独调用,没有意义,没有输出结果

     2)输出调用

                           直接输出了结果,写死了,不能对结果进行操作

     3)赋值调用 :有返回值类型的方法,推荐使用赋值调用,它可以对结果进一步操作

                            int result = sum(a,b) ;

一.需求:计算两个数据的和 

求两个数据之和的方法

不知道求和是几个数据--->分别定了三个方法,方法名不一样,输出没有问题
 命名规则:起名字-->见名知意
 Java就给提供一个专业名词:给多个方法起同一个名字,还不报错---->方法重载          (面向对象:继承中讲方法重写)
 
 方法重载:指的是方法名相同,参数不同,返回值没有关系
   参数不同:
   1)参数个数不同
   2)参数类型不同

定义一个方法:

    两个明确:

  1)明确返回值类型

  2)明确有几个参数,参数分别是什么类型

  @param a

  @param b

  @return 返回一个求和 的结果

 */

public static int sum(int a,int b) {

//定义变量

// int c  = a + b ;

// return c ;

return a+b ;

}

定义一个方法的注意事项:

 1)方法和方法是平级关系,一个方法中不能再定义个方法

 2)定义一个方法 时候,形式参数必须有数据类型,否则有问题

 3)在主main(),调用方法的时候,实际参数中不需要带数据类型的

 4)有大括号的地方,不能有分号,有分号的地方不能有大括号





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值