乐编科技--java基础day19

4.方法

1.方法的定义:
修饰符 返回值类型 方法名 (参数列表){
代码...
return ;
}
2.定义格式解释:
1.修饰符: 目前固定写法 public static 。
2.返回值类型:
①void
②表示方法运行的结果的数据类型,方法执行后将结果返回到调用者 。
3.方法名:为我们定义的方法起名
4.参数列表:
①无参数
②方法在运算过程中的未知数据,调用者调用方法时传递
5.return:方法结束。
①因为返回值类型是void,方法大括号内的return可以不写
②将方法执行后的结果带给调用者,方法执行到 return ,整体方法运行结束

例子:

public static void methodName() {    
System.out.println("这是一个方法");    
}

3.无返回值方法的调用
方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法。在 主方法中,直接写要调用的方法名字就可以调用了。

public static void main(String[] args) {    
 //调用定义的方法method     
method(); 
} 
//定义方法,被main方法调用 
public static void method() {    
System.out.println("自己定义的方法,需要被main调用运行");    
}

注意:
1.方法必须定义在一类中方法外
2.方法不能定义在另一个方法的里面
3.返回值类型,必须要和 return 语句返回的类型相同,否则编译失败
4.不能在 return 后面写代码, return 意味着方法结束,所有后面的代码永远不会执行,属于无效代码

// 返回值类型要求是int 
public static int getSum() {     
  return 5;
// 正确,int类型     
  return 1.2;
// 错误,类型不匹配     
  return true;
// 错误,类型不匹配 }

4.有返回值方法调用
需求:定义方法实现两个整数的求和计算。
明确返回值类型:方法计算的是整数的求和,结果也必然是个整数,返回值类型定义为int类型。
明确参数列表:计算哪两个整数的和,并不清楚,但可以确定是整数,参数列表可以定义两个int类型的 变量,由调用者调用方法时传

public class Method_Demo2 { 
   public static void main(String[] args) {        
// 调用方法getSum,传递两个整数,这里传递的实际数据又称为实际参数         // 并接收方法计算后的结果,返回值              
   int sum = getSum(5, 6);         
   System.out.println(sum);     
}      
/*  定义计算两个整数和的方法     返回值类型,计算结果是int     参数:不确定数据求和,定义int参数.参数又称为形式参数     */     
public static int getSum(int a, int b) {         
   return a + b;     
}   
}
方法调用图解.PNG

5.调用方法的三种形式
①直接调用:直接写方法名调用

public static void main(String[] args) {    
  print();    
} 
public static void print() {   
  System.out.println("方法被调用");     
}

②赋值调用:调用方法,在方法前面定义变量,接收方法返回值

public static void main(String[] args) {
    int sum = getSum(5,6);
       System.out.println(sum);
    } 
public static int getSum(int a,int b) {
    return a + b;
    }

③输出语句调用:

public static void main(String[] args) {
    System.out.println(getSum(5,6));
    } 
public static int getSum(int a,int b) {
    return a + b;    
}

例题:
1.计算1+2+3...+100的和

2.比较两个整数是否相同

5.判断语句

  1. if语句
    if(关系表达式){
    语句体;
    }
public static void main(String[] args){     
System.out.println("开始");     // 定义两个变量
int a = 10;     
int b = 20;     
//变量使用if判断     
if (a == b){        
System.out.println("a等于b");        
}     
int c = 10;     
if(a == c){        
System.out.println("a等于c");        
}     
System.out.println("结束"); 

2.if...else 语句
if(关系表达式) {
语句体1;
}else {
语句体2;
}

public static void main(String[] args){     
// 判断给定的数据是奇数还是偶数     
// 定义变量     
int a = 1;     
if(a % 2 == 0) {        
System.out.println("a是偶数");        
} else{        
System.out.println("a是奇数");        
}     
System.out.println("结束"); 
}

3.选择语句
switch(表达式) {
case 常量值1:
语句体1;
break;
case 常量值2:
语句体2;
break;
... default:
语句体n+1;
break;
}

public static void main(String[] args) {    
 //定义变量,判断是星期几     
int weekday = 6;     
//switch语句实现选择     
switch(weekday) {         
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语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。
4.for循环
for(初始化表达式①; 布尔表达式②; 步进表达式④){
循环体③
}
执行顺序:
①②③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化
②负责判断是否满足循环条件,不满足则跳出循环
③具体执行的语句
④循环后,循环条件所涉及变量的变化情况

//用循环改进,循环10次     //定义变量从0开始,循环条件为<10 
    for(int x = 0; x < 10; x++) {
        System.out.println("HelloWorld"+x);        
}

注意:
①break:终止switch或者循环

public static void main(String[] args) {
     for (int i = 1; i<=10; i++) {
         //需求:打印完两次HelloWorld之后结束循环
         if(i == 3){
           break;
         }
         System.out.println("HelloWorld"+i);
     } 
}

②continue:结束本次循环,继续下一次的循环

public static void main(String[] args) {
    for (int i = 1; i <= 10; i++) {
        //需求:不打印第三次HelloWorld
        if(i == 3){
          continue;
        }
        System.out.println("HelloWorld"+i);
    } 
}

5.循环语句2--while

while循环语句格式:
初始化表达式①
 while(布尔表达式②){
 循环体③
 步进表达式④
 }

执行流程执行顺序:
①②③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化。
②负责判断是否满足循环条件,不满足则跳出循环。
③具体执行的语句。
④循环后,循环变量的变化情况。
例子1:while循环输出10次HelloWorld

 public static void main(String[] args) {
 //while循环实现打印10次HelloWorld
 //定义初始化变量
 int i = 1; 
//循环条件<=10
 while(i<=10){
 System.out.println("HelloWorld");
 //步进
 i++; 
  } 
}

例子2:while循环计算1-100之间的和

public static void main(String[] args) {
 //使用while循环实现 //定义一个变量,记录累加求和
 int sum = 0;
 //定义初始化表达式
 int i = 1; 
//使用while循环让初始化表达式的值变化
 while(i<=100){
 //累加求和
 sum += i ;
 //步进表达式改变变量的值
 i++;
  }
//打印求和的变量
 System.out.println("1‐100的和是:"+sum);
 }

for 和 while 的小区别:

  • 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继 续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消 失,能够提高内存的使用效率。
  • 在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。

6.数组

数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。

定义方式一

格式:
数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];

数组定义格式详解: 
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。 
[] : 表示数组。 
数组名字:为定义的数组起个变量名
new:关键字,创建数组使用的关键字。 
数组存储的数据类型: 创建的数组容器可以存储什么数据类型。 
[长度]:数组的长度,表示数组容器中可以存储多少个元素。 
注意:数组有定长特性,长度一旦指定,不可更改
int[] arr = new int[3];
定义方式二

格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};

int[] arr = new int[]{1,2,3,4};
定义方式三

格式:
数据类型[] 数组名 = {元素1,元素2,元素3...};

int[] arr ={1,2,3};

索引访问数组中的元素:
数组名[索引]=数值,为数组中的元素赋值
变量=数组名[索引],获取出数组中的元素
注意:
每个数组都具有长度,而且是固定的,Java中赋予了数组的一个属性,可以获取到数组的 长度,语句为: 数组名.length ,属性length的执行结果是数组的长度,int类型结果。由次可以推断出,数 组的最大索引值为 数组名.length-1 。

数组的遍历
public static void main(String[] args) {     
    int[] arr = { 1, 2, 3, 4, 5 };     
    for (int i = 0; i < arr.length; i++) {       
    System.out.println(arr[i]);     
  } 
}

例题:
1.数组获取最大值元素

public static void main(String[] args) { 
    int[] arr = { 5, 15, 2000, 10000, 100, 4000 };     
    //定义变量,保存数组中0索引的元素    
    int max = arr[0];    
     //遍历数组,取出每个元素     
    for (int i = 0; i < arr.length; i++) {       
    //遍历到的元素和变量max比较      
   //如果数组元素大于max       
    if (arr[i] > max) {         
    //max记录住大值         
      max = arr[i];       
        }     
     }     
    System.out.println("数组最大值是: " + max); 
}

2.数组作为方法参数

 
 数组作为方法返回值 
数组作为方法的返回值,返回的是数组的内存地址
 
public static void main(String[] args) {     
int[] arr = { 1, 3, 5, 7, 9 };     
//调用方法,传递数组     
printArray(arr); } 
/* 创建方法,方法接收数组类型的参数      进行数组的遍历      */ 
public static void printArray(int[] arr) {     
for (int i = 0; i < arr.length; i++) {       
System.out.println(arr[i]);     
} 
}

3.数组作为方法返回值

public static void main(String[] args) {     
//调用方法,接收数组的返回值     
//接收到的是数组的内存地址     
    int[] arr = getArray();     
    for (int i = 0; i < arr.length; i++) {       
    System.out.println(arr[i]);     
    } 
} 

public static int[] getArray() {     
    int[] arr = { 1, 3, 5, 7, 9 };    
    //返回数组的地址,返回到调用者     
    return arr; }

4.Arrays类
如果我们不用Arrays这个类,我们想对一个数组从小到大进行排序,该怎么实现呢?代码如下:

public static void main(String[] args) {
        int[] arrold = {12,10,2,5,20};
        for (int i = 0 ; i < arrold.length;i++){

            for (int j = i+1; j < arrold.length;j++){
                if(arrold[i]> arrold[j] ){
                    int index = arrold[i];
                    arrold[i] = arrold[j] ;
                    arrold[j] = index;
                }
                System.out.println("i的值为"+i);
                System.out.println("j的值为"+j);
                String s =  Arrays.toString(arrold);
                System.out.println(s);
            }
        }
//        String s =  Arrays.toString(arrold);
//        System.out.println(s);
    }

public static void sort(int[] a) :对指定的 int 型数组按数字升序进行排序。

public static void main(String[] args) {
   // 定义int 数组
   int[] arr  =  {24, 7, 5, 48, 4, 46, 35, 11, 6, 2};   
System.out.println("排序前:"+ Arrays.toString(arr));
 // 排序前:[24, 7, 5, 48, 4, 46, 35, 11, 6,  2]
   // 升序排序
   Arrays.sort(arr);
   System.out.println("排序后:"+ Arrays.toString(arr));
// 排序后:[2, 4, 5, 6, 7, 11, 24, 35, 46,  48] 
}

倒序

 public static void main(String[] args) {
        Integer[] arrold = {12, 10, 2, 5, 20};
        Arrays.sort(arrold, Collections.reverseOrder());
        for (int i = 0; i < arrold.length; i++) {
            System.out.println(arrold[i]);
        }
    }

public static String toString(int[] a) :返回指定数组内容的字符串表示形式。

public static void main(String[] args) {
   // 定义int 数组
   int[] arr  =  {2,34,35,4,657,8,69,9};
   // 打印数组,输出地址值
   System.out.println(arr);
 // [I@2ac1fdc4     // 数组内容转为字符串   
String s = Arrays.toString(arr);
   // 打印字符串,输出内容
   System.out.println(s);
 // [2, 34, 35, 4, 657, 8, 69, 9] 
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350