java笔记

java基础学习笔记(基础语法篇)

一、java环境搭建

获取jdk

Oracle官网下载jdk

jdk-bin路径下 :

java.exe-执行程序 javac.exe-编译工具

常用命令:
cls   清屏
dir   目录
cd    进入
exit  退出

java开发的三个步骤

  1. 编写代码
  2. 编译代码
  3. 运行代码

java程序的执行原理

机器语言-汇编语言-高级语言

jdk的组成

jdk:java开发工具包

    开发工具:java javac ···

    jre:java的运行环境,真正运行java程序地方

          jvm  java虚拟机

          核心类库  java自己写好的程序,调用


jdk安装后Path和环境变量

Path环境变量用于记住程序路径,方便在命令行窗口的任意目录启动程序

二、java语言

idea项目结构简介

project(项目、工程)

module(模块)

package(包)

class(类)

idea常用快捷键
1669961239121.png

Ctrl + Alt + T 快速添加方法

基础语法:

注释:
单行注释      //              Ctal + /
多行注释      /*      */   Ctal+Shift+/
文档注释      /**     */
字面量:

字面量就是数据在程序中的书写格式

常用数据生活中的写法程序中的写法说明
整数666,-88666,-88写法一致
小数13.14,-5,1213.14,-5,12写法一致
字符A,O,我‘A’,‘O’,‘我’单引号,且只有一个字符
字符串helloworld“helloworld”双引号,内容可有可无
布尔值真,假ture,falseture:真 false;假
空值值是;null一个特殊的值,空值

\n 换行 \t 一个tab

变量:

变量是用来存储一个数据的内存区域(可以理解成盒子),且里面存储的数据可以变化。

变量定义的格式:

数据类型    变量名称  =  初始值;
public class Demo{
    public static void main(String[] args){
        //目标:学会使用变量
        //数据类型 变量名称 = 初始值;
        double money = 6.0;
        System.out.println(money);
        
        //收红包(从有往左看)
        money = money + 4.0;
        System.out.println(money);
        
        System.out.println("--------------");
        int age = 21;
        System.out.println(age);  //21
        
        age = 25;
        System.out.println(age);  //25
    }
}
变量注意事项:
public slass Demo{
    public static void main(String[] args){
        //1.变量要先声明再使用
        int a = 23;
        System.out.println(a);
        //2.变量声明后,不能存储其他类型数据
        //a=1.5;
        
        //3.变量的有效范围是从定义到“}”截止,且在同一个范围内部不能定义2个同名变量
        {
            int b = 25;
            System.out.println(b);
        }
        // System.out.println(b); 
        
        //变量定义的时候可以没有初始值,但是使用时必须给初始值
        int c;
        Sysout.out.println(c);
    }
}
变量在计算机中的底层原理:
二进制:
  • 只有0 1,按照逢二进一的方式表示数据

  • 计算机中的数据的最小单位

    8个二进制位为一组来保存数据,1字节=8bit 1B=8b byte字节 bit位

ASCLL编码表:

a 97

A 65

进制转换:
十进制转二进制:

除二取余法

二进制转十进制:

0011

12^0 +12

二进制转八进制:

97 01100001 141 01 100 001

二进制转16进制:

97: 01100001 0110,0001 61

250:11111010 1111、1010 FA

二进制:0b 八进制:0 十进制:0x或0X

数据类型:
基本数据类型:

整数:

byte 1、short 2、int(默认) 4、long 8

浮点数:

float 4、double(默认) 8

字符:

char 2

布尔:

boolean 1

引用数据类型 : string等
关键字、标识符

标识符:数字、字母、下划线等组成 不能以数字开头,不能用关键字

变量首字母小写 类名首字母大写

类型转换:

自动类型转换

表达式的自动类型转换

强制类型转换:

数据类型 变量2 = (数据类型)变量1、数据

运算符

算术运算符
  • +、-、*、/、%

"+"做连接符: 与字符串运算的时候作连接符,结构依然是一个字符串

能算则算,不能算则在一起

public static void main(String[] args){
	int a = 5;
	System.out.println("abc"+'a');//abca
	System.out.println("abc"+a);//abc5
	System.out.println(5+a);//10
	System.out.println("abc"+5+'a');abc5a
	System.out.println(15+"abc"+15);//15abc15
	System.out.println(a+'a');//102
	System.out.println(a+""+'a');//5a
	System.out.println(a+'a'+"itheima");
	//102 itheima
	System.out.println("itheima"+a+'a');//ithiema5a
	System.out.println("itheima"+(a+'a'));
	//itheima102
}

自增自减运算符:
  • ++和–既可以放在变量后也可以放在变量前
  • ++、–只能操作变量、不能操作字面量
  1. ++i --i:

    放在变量前,先对变量进行+1-1,再拿变量的值进行运算

  2. i++ i–

    放在变量后,先拿变量的值进行运算,再对变量的值进行+1、-1

public static void main(String[] args){
    int i = 10;
    int j = ++i;
    System.out.println(i);//11
    System.out.println(j);//11
    
    int m = 10;
    int n = m++;
    System.out.pirntln(m);//11
    System.out.println(n);//10
}
int c = 10;
int d = 5;
//c    10  11  12  11
//d    5  4  3  4
//rs3    10 + 12  - 4 +4  -  12 +  4 =14+2=16
int rs3 = c++ + ++c - --d + d-- - c-- + ++d + 2 
赋值运算符:
  • int i = 10; 先看“=”右边,把数据10赋值给变量i
  • += -= *= /= %=
a+=b;  //  a = (int)(a+b)
关系运算符

是对数据进行条件判断的符号,最终返回一个比较的布尔结果

符号说明
==a==b,判断a和b是否相等,是为ture,不是为false
!=a!=b,判断a和b是否不相等,是为ture,不是为false
>a>b,判断a是否大于b,是为ture,不是为false
>=a>=b,判断a是否大于等于b,是为ture,不是为false
<a<b,判断a是否小于b,是为ture,不是为false
<=a<=b,判断a是否小于等于b,是为ture,不是为false
逻辑运算符
符号介绍说明
&逻辑与必须都是ture,结果才是ture,只要有一个false,结果一定是false
|逻辑或只要有一个ture,结果就是ture
逻辑非你真我假,你假我真
^逻辑异或如果两个条件都是false或者都是ture则结果是false。两个条件不同结果是ture。
&&短路与判断结果与“&”一样。左边为false,右边则不执行
||短路或判断结果与“|”一样。左边为ture,右边则不执行
三元运算符:
  • 格式: 条件表达式 ?值1:值2;

    值为ture,返回值1,如果为false,返回值2.

public static void main(String[] args){
    double score = 98;
    String rs = score >= 60 ? "考试通过" : "挂科" ;
    System.out.println(rs);
    
    //需要从两个整数中找出最大值
    int a = 10;
    int b = 2000;
    int max = a > b ? a : b;
    System.out.println(max);
}

案例:

//求三个整数的最大值:
public static void main(String[] args){
    int i =10;
    int j =30;
    int k = 50;
    int temp = i > j ? i : j ;
    int rsMax = temp > k ? temp : k;
    System.out.println(rsMax);
    
    
    int rsMax1 = i > j ? (i > k ?i : k) : (j > k ? j :k);
    System.out.println(rsMax1);
    
}
运算符优先级:

1670040163261.png

案例知识:键盘录入

  1. 导包:告诉程序去jdk的哪个包中找到扫描器技术

    impirt java.util.Scanner;

  2. 写一行代码代表得到键盘扫描器对象

    Scanner sc = new Scanner(System.in);

  3. 等待接受用户输入数据

    sc.next();

import java.util,Scanner;


public class Demo{

	public static void mian(String[] args){
        
        Scanner sc = new Scanner(System.in);
        //这个代码等待用户输入,直到用户输入玩并按了回车键就会吧数据得到
        System.out.println("请输入您的年龄:");
        int age = sc.nextInt()
        System.out.println("您的年龄是:"+age);
    }  
}

程序流程控制

顺序结构:(程序默认流程)

开始 语句1 语句2 … 结束

分支结构:(if 、swich)
if

三种格式:

格式1if(条件表达式){
	语句体;
}
格式2if(条件表达式){
	语句体1}else{
	语句体2}
格式3if(条件表达式1){
	语句体1}else if(条件表达式2){
	语句体2}else if(条件表达式3){
    语句体3}
    ...
     else{
       语句体N+1}
//   案例:

//心跳数据在40到100 之间是正常的     
		int hertBeat = 30;
        if(hertBeat<40 || hertBeat>100){
            System.out.println("您的心跳数据是"+hertBeat+"可能需要进一步检查");
        }
        System.out.println("检查结束");



//发送红包
        double money = 5999;
        if(money>=1314){
            System.out.println("发送成功");
        }else{
            System.out.println("没钱了");
        }


//绩效系统:0~60  C 60~80  B 80~90  A  90~100  A+
        int score = 111;
        if (score>=0 && score<60){
            System.out.println("您本月的绩效是:C");
        }else if(score>=60 && score<80){
            System.out.println("您本月的绩效是:B");
        }else if (score>=80 && score<90){
            System.out.println("您本月的绩效是:A");
        }else if (score>=90 && score<=100){
            System.out.println("您本月的绩效是:A+");
        }else {
            System.out.println("您输入的分数不对!");
        }

swich

适合做值匹配的分支选择,结构清晰,格式良好

swich(表达式){
    case1:
        执行代码...;
    	break;
    case2:
        执行代码...;
    	break;
    
    ...
    case1:
        执行代码...;
    	break;
    case  值n-1:
        执行代码...;
    	break;
    default:
    	执行代码n;  
}
//     案例:

String weekday = "周一";
        switch (weekday){
            case "周一":
                System.out.println("埋头苦干,解决bug");
                break;
            case "周二":
                System.out.println("请求大牛程序员帮忙");
                break;
            case "周三":
                System.out.println("今晚烧烤");
                break;
            case "周四":
                System.out.println("主动帮忙女程序员解决bug");
                break;
            case "周五":
                System.out.println("今晚吃鸡");
                break;
            case "周六":
                System.out.println("写作业");
                break;
            case "周日":
                System.out.println("郁郁寡欢,准备上课");
                break;
            default:
                System.out.println("数据有误");
        }
swich的穿透性
//需求:用户输入月份可以展示该月份的天数
//1、3、5、7、8、10、12月份是31天
//2月份是闰年为29天、非闰年为28天
//4、6、9、11月份是30天

public static void main(String[] args){
    int month = 7;
        switch (month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println(month+"是31天");
                break;
            case 2:
                System.out.println(month+"月份是闰年为29天、非闰年为28天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println(month+"月份是30天");
                break;
            default:
                System.out.println("数据有误!");
    
        }
    
}
循环结构:(for 、 while、do…while)
for循环
//格式
for(初始化语句;循环条件;迭代语句){
    循环语句体(重复执行的代码);
}

//示例
for(int i = 0; i < 3; i++){
    System.out.println("Hello World");
}
for循环案例
//案例1:求1~5之间的数据和,并把求和结果在控制台输出
int sum;
for(int i = 0; i <= 5; i++){
    sum+=i;
}
System.out.println(sum);

//案例2:求1~10之间的奇数和,并把结果在控制台输出

//方法1:
int sum = 0;
for(i = 1; i <= 10; i++){
    if(i % 2 == 1){
        sum += i;
    }
}
System.out.println(sum)
    
//方法2:
for(i = 1; i<= 10; i+=2){
        sum+=i;
    }
System.out.println(sum)
    
//案例3:在控制台输出所有的“水仙花数”,水仙花数满足两个要求:1. 水仙花数是一个三位数   2.水仙花数的个位、十位、百位的数字立方和等于原数。
public class TestDemo {
    public static void main(String[] args) {
        int count = 0;//记录水仙花数
        for (int i = 100;i<1000;i++){
            int ge = i % 10;
            int shi = i /10 %10;
            int bai =   i /100;
            if (ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {
                System.out.print(i+"\t");
                count++;
            }
        }
        System.out.println();//换行
        System.out.println("水仙花的个数为:"+count);
    }
}
while循环

// 格式
初始化语句;
whlie(循环条件){
	循环体语句(被重复执行的代码);
	迭代语句;
}

//示例
int i = 0;
whlie(i<3){
    System.out.println("Hello World");
    i++;
}
whlie循环案例
//案例:珠穆朗玛峰(8848.86=8848860毫米),假如我有一张纸,他的厚度是0.1毫米,请问,折叠多少次,可以折成珠穆朗玛峰的高度。
public static void main(String[] args) {
        double peakHeight = 8848860;    //山峰高度
        double paperThickness = 0.1;    //纸张厚度
        int count = 0;
        while (paperThickness < peakHeight){
            paperThickness*=2;
            count++;
        }
        System.out.println("纸张折叠了"+count+"次");
    }
do-whlie循环
//格式
初始化语句;
do{
	循环体语句;
	迭代语句;
}while(循环条件)
    
    
//示例    先执行一次在循环
int i =0;
do{
    System.out.println("Hello World!");
    i++l;
}while(i<3)

三种循环的区别

  • for循环和while循环(先判断后执行)
  • do…whlie(第一次先执行后判断)

for和whlie的区别

  • 执行流程是一模一样的
  • 已知循环次数用for循环,不清楚循环次数用whlie循环
  • for循环中,控制循环的变量只在循环中可以使用,whlie循环控制循环的变量在循环后还可以使用
死循环

一直执行下去,如果没有干预不会停止下来

//写法:
for(;;){
    System.out.println("Hello World")
}

//经典写法
whlie(true){
    System.out.println("Hello World")
}
do {
    System.out.println("Hello World")
}whlie(true)
//案例:   系统密码是520,请用户不断输入密码验证,验证不对输出密码错误,验证成功输出欢迎进入系统,并停止程序。

public static void main(String[] args) {
        int okPassword = 520;
        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.println("请你输入密码:");
            int password = sc.nextInt();
            if (password == okPassword){
                System.out.println("密码正确");
                break;
            }else{
                System.out.println("密码错误");
            }
        }
循环嵌套
public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.println("我爱你!");
            }
            System.out.println("-------------");
        }
    
    
public static void main(String[] args) {
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
跳转关键字 break,continue

break:跳出并结束当前所在的循环

continue:用于跳出当前循环的当次执行,进入下一次循环

案例技术:随机数Random类

Random生成随机数的特点

nextInt(10) 0~9之间的随机数

int number = r.nextInt(10)+1; 1~10之间

int number = r.nextInt(15)+3; 3~17之间

  • 65~91 => (0~26)+65;
  • int number = r.nextInt(27)+26;
// Random的使用
import java.util.Random

public static void main(String[] args){
    Random r = new Random();
    
    int number = r.nextInt(10);
    System.out.println("随机数产生了:"+number)
}
//猜数字游戏:
随机生成一个1-100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中结束游戏。分析:①随机生成一个1-100之间的数据②使用死循环让用户不断提示用户猜测,猜大提示过大,猜小提示过小,猜中结束游戏。

package com.wuxb.test;
import java.util.Random;
import java.util.Scanner;

public class TestDemo {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        Random r = new Random();
        int number = r.nextInt(100)+1;
        while (true){
            System.out.println("请输入猜测的数据(1~100):");
            int date = sc.nextInt();
            if (date > number){
                System.out.println("猜大了!");
            }else if(date<number){
                System.out.println("猜小了!");
            }else{
                System.out.println("猜对了!正确答案就是:"+number);
                break;
            }
        }
    }
}

数组

数组就是用来存储一批同种类型数据的内存区域(可理解为容器)

数组的定义

静态初始化数组

//完整格式
数据类型[]  数组名 = new 数据类型 [] { 元素1,元素2,...   }
int[] ages = new int[] {12,24,56};


数据类型[]  数组名 =  { 元素1,元素2,...   }
int[] ages = {12,24,56};

数组的访问:

 
数组名称[索引]

//数组长度
数组名.length
  • “ 数据类型[] 数组名 ” 和 “ 数据类型 数组名[] “ 一样
  • 什么类型数组放什么类型的数据
  • 数组一旦定义下来 数组的类型和长度就固定了

动态初始化

数据类型[] 数组名 = new 数据类型[长度]int[] arr = new int[3]

元素默认值

数据类型明细默认值
基本类型byte、short、char、int、long0
基本类型float、double0.0
基本类型booleanfalse
引用类型类、接口、数组、Stringnull
数组的遍历
int[] ages = {20,30,40,50}

for(i = 0;i < ages.length; i++){
    System.out.println(ages[i])
}
数组的案例

数组元素求和

//某个部门5名员工的销售额分别是:16,26,36,6,100,请计算出他们部门的总销售额
package com.wuxb.create;

public class ArrayDemo {
    public static void main(String[] args) {
        //静态初始化的方式定义数组
        int[] arr = new  int[]{16,26,36,6,100};
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        System.out.println("总销售额为:"+sum);
    }
}

求数组最大值

// 求出下列最大值  15,,9000,10000,20000,9500,-5;
package com.wuxb.create;

public class ArrayDemo {
    public static void main(String[] args) {
        //静态初始化的方式定义数组
        int[] arr = new  int[]{15,9000,10000,20000,9500,-5};
        int Max = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (Max < arr[i]){
                Max = arr[i];
            }
        }
        System.out.println("最大值是:"+Max);
    }
}

猜数字游戏

//开发一个幸运小游戏,游戏规则如下:
游戏后台随机生成1-20之间的5个数(无所谓是否重复),然后让大家来猜数字:未猜中提示:“未命中”,并继续猜测猜中提示:“运气不错,猜中了”,并输出该数据第一次出现的位置,且输出全部5个数据,最终结束本游戏。

package com.wuxb.create;

import java.util.Random;
import java.util.Scanner;

public class ArrayDemo {
    public static void main(String[] args) {
        //随机生成1~20之间的5个随机数

        //1.定义一个动态初始化的数组存储5个随机的1~20之间的数据
        int[] data =  new int[5];


        //2.动态的生成5个1~20之间的随机数并存入到数组中去
        Random r = new Random();
        for (int i = 0; i < data.length; i++) {
            data[i] = r.nextInt(20)+1;
        }

        //3.使用一个死循环让用户进行猜测
        Scanner sc = new Scanner(System.in);
        OUT:
        while (true){
            System.out.println("请您输入一个1~20之间的整数进行猜测:");
            int guessData = sc.nextInt();

         //4.遍历数组中的每个数据,看是否数据与猜测的数据相同,相同代表猜中,给出提示
            for (int i = 0; i < data.length; i++) {
                if (data[i] == guessData){
                    System.out.println("恭喜您猜对了,运气不错!您猜的数据的索引是:"+ i);
                    break OUT;//结束了整个死循环,代表游戏结束
                }
            }
            System.out.println("当前猜的的数据不在数组中,请重新猜测!");
        }
        //5.输出数组的全部元素,让用户看到自己确实猜中了某个数据
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i]+"\t");
        }
    }
}

随机排名

//需求某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。
22 33 35 13 88     ->    13 35 88 33 22

package com.wuxb.test;

import java.util.Random;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {

        //动态初始化一个数组存储5个员工号
        int[] codes = new int[5];

        //定义一个循环,循环五次,依次输入工号存入对应位置
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < codes.length; i++) {
            System.out.println("请输入员工的工号:");
            int code = sc.nextInt();
            codes[i] = code;
        }

        // 遍历数组中的每个元素,然后随机一个索引出来,让该元素与随机索引位置处的元素交换位置
        Random r = new Random();
        for (int i = 0; i < codes.length; i++) {
            int index = r.nextInt(codes.length);
            int temp = codes[index];
            codes[index] = codes[i];
            codes[i] = temp;
        }

        for (int i = 0; i < codes.length; i++) {
            System.out.print(codes[i]+"\t");
        }

    }
}

数组排序

数组排序的技术

  • 冒泡排序
//每次从数组中找出最大值放在数组的后面去

package com.wuxb.test;

public class Test01 {
    public static void main(String[] args) {

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

        for (int i = 0; i < arr.length -1; i++) {
            for (int j = 0; j < arr.length - i -1; j++) {
                if (arr[j]>arr[j+1]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j]  =  temp;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"\t");
        }
    }
}
  • 选择排序
  • 快速排序
  • 插入排序

数组搜索相关的技术

  • 二分搜索
  • 分块查找
  • 哈希表查找
数组的内存图

java内存分配:

  • 栈:

    方法运行时所进入的内存,变量也是在这里

  • new出来的东西会在这块内存中开辟空间并产生地址

  • 方法区

    字节码文件加载时进入的内存

  • 本地方法栈

  • 寄存器

两个变量指向同一个数组

1670125342349.png

数组使用常见的问题

不要访问超过数组最大索引—否则出现数组访问越界异常

int[] arr = null

    System.out.println(arr);  //null
	System.out.println(arr.length);  //空指针异常
Debug工具的使用

DEBUG工具基本使用步骤:

①在需要控制的代码行左侧,点击一下,形成断点

②选择使用Debug方式启动程序,启动后程序会在断点暂停

③控制代码一行一行的往下执行

方法

方法是什么:

方法是一种语法结构,他可以把一段代码封装成一个功能,以便重复调用

  • 提高代码的复用性
  • 让程序的逻辑更清晰
方法定义、调用
方法完整格式
修饰符 返回值类型 方法名(形参列表){
    方法体代码(需要执行的功能代码)
    return 返回值;
}

public static int add(int a , int b){
    int c = a + b;
    return c;
}

调用:

方法名(…);

方法的其他写法
方法定义时:返回值类型、形参列表、可以按照需求进行填写

修饰符 返回值类型 方法名(形参列表){
    方法体代码(需要执行的功能代码)
    return 返回值;
}

public static void print(){
	System.out.println(Hello World);
	System.out.println(Hello World);
	System.out.println(Hello World);
}
  • 如果方法不需要返回结果,返回值类型必须声明成void(无返回值),此时方法内部不可以使用return返回数据
  • 方法如果没有参数,或者返回值类型声明为void可以称为五参数、无返回值的方法,以此类推。
方法使用的常见问题
  1. 方法的编写顺序无所谓。
  2. 方法与方法之间是平级关系,不能嵌套定义。
  3. 方法的返回值类型为void (无返回值),方法内则不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。
  4. return语句下面,不能编写代码,因为永远执行不到,属于无效的代码。
  5. 方法不调用就不执行,调用时必须严格匹配方法的参数情况。
  6. 有返回值的方法调用时可以选择定义变量接收结果,或者直接输出调用,甚至直接调用;无返回值方法的调用只能直接调用一下。
方法案例

定义方法的技巧:

修饰符: public static (暂时固定的)
方法名称:自己取名,有意义,英文小写,驼峰模式。(有意义的名字即可)
方法体代码:完成自己需要写的功能代码即可。(具体需求具体实现)
    1.分析方法是否需要申请返回值类型 2.分析方法是否需要接受参数

//使用方法计算1~n的和并返回
package com.wuxibin.Demo01;

public class MethodText {
    public static void main(String[] args) {
        int s = sum(3);
        System.out.println(s);
    }
    public static int sum(int n){
        int sum = 0;
        for (int i = 0 ; i <= n; i++){
            sum += i;
        }
        return sum;
    }
}
//拿一个整数,把整数交给方法,在方法中输出改数是奇数还是偶数

package com.wuxibin.Demo01;

import java.util.Scanner;

public class MethodText {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int data = sc.nextInt();
        up(data);
    }

    public static void up(int n){
        if (n%2 == 0){
            System.out.println("该数是偶数");
        }else
            System.out.println("该数是奇数");
    }
}

//	把找出数组的最大值案例,改造成支持返回任意整型数组的最大值数据

package com.wuxibin.Demo01;

import java.util.Scanner;

public class MethodText {
    public static void main(String[] args) {
       int[] ages = {23,55,19,78,34};
       int max = getArray(ages);
        System.out.println("最大的数据是:"+max);
    }

    public static int getArray(int[] arr){
        int max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (max < arr[i]){
                max = arr[i];
            }
        }
        return max;
    }
}
方法的参数传递机制

基本类型的参数传递:

java的参数传递机制:值传递
在传输实参给方法的形参的时候,并不是传输实参变量本身,而是传输实参变量中存储的值,这就是值传递



package com.wuxibin.Demo01;

public class MethodText {
    public static void main(String[] args) {
        int a = 10;
        change(a);
        System.out.println(a);//10
    }

    public static void change(int a){
        System.out.println(a);//10
        a = 20;
        System.out.println(a);//20
    }
}

引用类型的参数传递:

package com.wuxibin.Demo01;

public class MethodText {
    public static void main(String[] args) {
        int[] arr = new int[]{10,20,30};
        change(arr);
        System.out.println(arr[1]);//222
    }

    public static void change(int[] arr){
        System.out.println(arr[1]);//20
        arr[1] = 222;
        System.out.println(arr[1]);//222
    }
}

方法的参数传递案例
设计一个方法用于输出任意整型数组的内容,要求输出成如下格式:
“该数组内容:[11,22,33,44,55]package com.wuxibin.Demo01;

import java.util.Scanner;

public class MethodText {
    public static void main(String[] args) {
        //打印任意整型的数组
        int[] arrs = new int[]{11,22,33,44,55};
        printArray(arrs);

        System.out.println("-------------");
        int[] number = {1,3,56,76,43};
        printArray(number);

        int[] number1 = null;
        printArray(number1);
    }

    public static void printArray(int[] arr){
        System.out.print("[");
        if (arr != null && arr.length > 0){
            for (int i = 0; i < arr.length; i++) {
            /*if (i == arr.length - 1){
                System.out.print(arr[i]);
            }else {
                System.out.print(arr[i] + ",");
            }*/
                System.out.print(i == arr.length -1 ? arr[i] : arr[i]+ ",");
            }
        }
        System.out.println("]");
    }
}


设计一个方法可以接受整形数组,和要查询的元素值;最终要返回元素在改素组中的索引,如果数组中不存在该元素则返回 -1package com.wuxibin.Demo01;

import java.util.Scanner;

public class MethodText {
    public static void main(String[] args) {
        int[] number = {12,34,56,67,98};
        int index = searchIndex(number,98);
        System.out.println("该数据的索引是:"+ index);
    }


    public static int searchIndex(int[] arr,int data){
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == data){
                return i;
            }
        }
        return -1;
    }
}

如果两个数组的类型,元素顺序和内容是一样的我们就认为这2个数组是一模一样的
例如:如下2个数组是一样的
int[] arrs = {10,20,30}
int[] arrs = {10,20,30}
请使用方法完成:能够判断任意两个整型数组是否一样,并返回true或者falsepackage com.wuxibin.Demo01;

import java.util.Scanner;

public class MethodText {
    public static void main(String[] args) {
        //判断两个整型数组是否一样
        int[] arr1 = {10,20,30};
        int[] arr2 = {10,20,30};
        System.out.println(compare(arr1, arr2));
    }

    //定义一个方法,有两个整型数组,返回值类型是布尔类型
    public static boolean compare(int[] arr1,int[] arr2){
        //判断两个数组是否一样
        for (int i = 0; i < arr1.length; i++) {
            if (arr1.length == arr2.length){
                if (arr1[i] != arr2[i]){
                    return false;
                }
            }else {
                return false;
            }
        }
        return true;
    }
}
方法重载
  • 同一个类中,出现多个方法名称相同,但是形参列表不同,这些就是方法重载
  • 形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。
单独使用return关键字
  • return 可以立即跳出并结束当前方法的执行;return关键字可单独使用在方法中

d main(String[] args) {
int[] number = {12,34,56,67,98};
int index = searchIndex(number,98);
System.out.println(“该数据的索引是:”+ index);
}

public static int searchIndex(int[] arr,int data){
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == data){
            return i;
        }
    }
    return -1;
}

}


```java
如果两个数组的类型,元素顺序和内容是一样的我们就认为这2个数组是一模一样的
例如:如下2个数组是一样的
int[] arrs = {10,20,30}
int[] arrs = {10,20,30}
请使用方法完成:能够判断任意两个整型数组是否一样,并返回true或者false。


package com.wuxibin.Demo01;

import java.util.Scanner;

public class MethodText {
    public static void main(String[] args) {
        //判断两个整型数组是否一样
        int[] arr1 = {10,20,30};
        int[] arr2 = {10,20,30};
        System.out.println(compare(arr1, arr2));
    }

    //定义一个方法,有两个整型数组,返回值类型是布尔类型
    public static boolean compare(int[] arr1,int[] arr2){
        //判断两个数组是否一样
        for (int i = 0; i < arr1.length; i++) {
            if (arr1.length == arr2.length){
                if (arr1[i] != arr2[i]){
                    return false;
                }
            }else {
                return false;
            }
        }
        return true;
    }
}
方法重载
  • 同一个类中,出现多个方法名称相同,但是形参列表不同,这些就是方法重载
  • 形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。
单独使用return关键字
  • return 可以立即跳出并结束当前方法的执行;return关键字可单独使用在方法中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值