赞
踩
语言:人与人交流沟通的表达方式
计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言
Java语言是美国Sun公司(Stanford University Network)在1995年推出的计算机语言
Java之父:詹姆斯·高斯林(James Gosling)
2009年,Sun公司被甲骨文公司收购,所以我们现在访问oracle官网即可:https://www.oracle.com
java语言的三个版本:
JavaSE: Java 语言的(标准版),用于桌面应用的开发,是其他两个版本的基础
JavaME: Java 语言的(小型版),用于嵌入式消费类电子设备
JavaEE: Java 语言的(企业版),用于 Web 方向的网站开发
Java程序并非是直接运行的,Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行。所以在不同的操作系统下,只需安装不同的Java虚拟机即可实现java程序的跨平台。
JVM(Java Virtual Machine),Java虚拟机
JRE(Java Runtime Environment),Java运行环境,包含了JVM和Java的核心类库(Java API)
JDK(Java Development Kit)称为Java开发工具,包含了JRE和开发工具
总结:我们只需安装JDK即可,它包含了java的运行环境和虚拟机。
通过官方网站获取JDK
注意:针对不同的操作系统,需要下载对应版本的JDK。
傻瓜式安装,下一步即可。但默认的安装路径是在C:\Program Files下,为方便统一管理建议修改安装路径,将与开发相关的软件都安装到一个目录下,例如:E:\develop。
注意:安装路径不要包含中文或者空格等特殊字符(使用纯英文目录)。
目录名称 | 说明 |
---|---|
bin | 该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。 |
conf | 该路径下存放了JDK的相关配置文件。 |
include | 该路径下存放了一些平台特定的头文件。 |
jmods | 该路径下存放了JDK的各种模块。 |
legal | 该路径下存放了JDK各模块的授权文档。 |
lib | 该路径下存放了JDK工具的一些补充JAR包。 |
在接触集成开发环境之前,我们需要使用命令行窗口对java程序进行编译和运行,所以需要知道一些常用DOS命令。
1、打开命令行窗口的方式:win + r打开运行窗口,输入cmd,回车。
2、常用命令及其作用
操作 | 说明 |
---|---|
盘符名称: | 盘符切换。E:回车,表示切换到E盘。 |
dir | 查看当前路径下的内容。 |
cd 目录 | 进入单级目录。cdithuipu |
cd … | 回退到上一级目录。 |
cd 目录1\目录2… | 进入多级目录。cdithuipu\JavaSE |
cd \ | 回退到盘符目录。 |
cls | 清屏。 |
exit | 退出命令提示符窗口。 |
开发Java程序,需要使用JDK提供的开发工具(比如javac.exe、java.exe等命令),而这些工具在JDK的安装目录的bin目录下,如果不配置环境变量,那么这些命令只可以在该目录下执行。我们不可能把所有的java文件都放到JDK的bin目录下,所以配置环境变量的作用就是可以使bin目录下的java相关命令可以在任意目录下使用。
HelloWorld案例是指在计算机屏幕上输出“HelloWorld”这行文字。
各种计算机语言都习惯使用该案例作为第一个演示案例。
开发Java程序,需要三个步骤:编写程序,编译程序,运行程序。
1、新建文本文档文件,修改名称为HelloWorld.java。
2、用记事本打开HelloWorld.java文件,输写程序内容。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
存文件,打开命令行窗口,将目录切换至java文件所在目录,编译java文件生成class文件,运行class文件。
编译:javac 文件名.java
范例:javac HelloWorld.java
执行:java 类名
范例:java HelloWorld
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cR44cqHy-1683971924370)(img\图片1.jpg)]
在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)。
1、具备识别BUG的能力:多看
2、具备分析BUG的能力:多思考,多查资料
3、具备解决BUG的能力:多尝试,多总结
1、非法字符问题。Java中的符号都是英文格式的。
2、大小写问题。Java语言对大小写敏感(区分大小写)。
3、在系统中显示文件的扩展名,避免出现HelloWorld.java.txt文件。
4、编译命令后的java文件名需要带文件后缀.java
5、运行命令后的class文件名(类名)不带文件后缀
class Demo{ //class 代表一个类
public void static main(String[] args) { //main函数是java的入口,入门程序
System.out.println("Hello World"); //打印输出,在括号中写的东西--就会输出
}
}
/*
这是一个Java的入门程序
这是一个多行注释
*/
Java赋予特殊含义的字段
特点:
定义:在程序的运行过程中,其值不会发生改变的
Java中的常量的分类:
class Demo{
public void static main(){
System.out.println("Hello World!"); //字符串常量值
System.out.println(1);//整数常量
System.out.println(1.1);//小数常量
System.out.println('3');//字符常量
System.out.println(true);//布尔常量
System.out.println("null");//null
}
}
定义:在程序的于行过程中,其值可以发生变化(在内存中存存储数据)
本质:在内存中存储数据
变量的定义格式:
数据类型 变量名 = 变量值 int num = 10;
计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫"位(bit)“,又称为比特位,通常用小写的b表示。热计算机中最基本的存储单元叫"字节”(byte),通常用大写的B表示,字节是由8个位组成:
1B(字节) = 8bit
1kb = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
整数类型:(默认的数据类型是 int)
整数类型 | 内存占用 | 取值范围 |
---|---|---|
byte | 1字节 | -128 ~ 127 |
short | 2字节 | -32768 ~ 32787 |
int | 4字节 | -2147483648 ~ 2147483647 |
long | 8字节 | -2的63次方到2的63次方-1 |
总结:
class Demo{
public void static main(String[] args) {
// 1、定义整数类型变量
int i = 10;
System.out.println("i = " + i);
System.out.println("sout = " + 10);
// 2、定义一个long类型的变量
long m = 25;
/* 25 是一个整数类型(int)m long 不会报错 它会有一个类型的转换(隐式转换)可以添加一个大写的L */
long l = 100L;
System.out.println("l = " + l);
System.out.println("m = " + m);
}
}
浮点数:(默认的数据类型是 double)
浮点数(小数) | 内存占用 | 取值范围 |
---|---|---|
float(单精度) | 4字节 | …… |
double(双精度) | 8字节 | …… |
class Demo{
public void static main(String[] args) {
System.out.println("常量 = " + 12.4);
// 定义 double
String piStr = 4.14;
System.out.println("double = " + pi);
//定义 float
float piFat = 3.14F;
System.out.println("float = " + pifat);
}
}
总结
字符类型:(char)
字符类型 | 字节 | 取值范围(对应Unicode表) |
---|---|---|
char | 2字节 | 0 ~ 65535 |
class Demo {
public void static main(String[] args) {
// 定义字符
char c = '1';
System.out.println(c);
}
}
布尔类型:(boolean)
布尔类型 | 字节 | 取值范围 |
---|---|---|
boolean | 1 | true、false |
class Demo {
public void static main(String[] args) {
// 定义布尔类型
boolean b = true;
System.out.println(b);
}
}
引用数据类型:
// 1、变量的生命:数据类型 变量名 = 变量值; int num = 10; // 声明并且赋值 // 2、先声明再赋值 double money; money = 10.3; // 3、扩展 int a = 10,b = 20; int o,p; //o = 10,p = 10; 0 = 10; p = 20; // 4、变量的修改 int sum = 10; sum = 20; //会在内存地址中覆盖原来的值 /* 5、注意事项 1.在同一个方法内,变量名不能重复 2.变量在使用之前必须初始化(必须进项赋值) 3.定义long类型的时候可以给数值添加L(建议是大写,小写的像1不太明确) 4.定义float类型的小数的时候必须加 F | f(否则会编译报错,小数类型默认是double,告诉jvm这是一个float类型) */
获得键盘输入对象的时候:
import java.utli.Scanner;
class MyScannerTest{
public void static main(String[] args) {
Scanner myScanner = new Scanner(Syatem.in);
System.out.println("请输入一个整数:");
int num = myScanner.nextInt();
System.out.println(num);
}
}
标识符:就是给变量、方法、类起的名字。
Java中标识符的组成规范:
Java中标识符的命名规范:
Java的开发中,数据的数据类型是可以相互转换的.分两种
- 自动类型转换(隐式转换)
- 强制类型转换
int i = 10;
double sum = i + 12.9;
隐式转换
定义:将数值范围小的数或者变量赋值给一个数值范围大的变量:由小到大隐式转换
class Demo{
public void static main(String[] args) {
// 定义int类型的变量
int m = 10;
// 赋值
double d = m; //int --> double
System.out.println(d); //10.0
}
}
隐式转换的细节:
常量的优化机制
定义:在编译的时候,整数常量的计算会自动计算出来,查看在没在对应的数据类型取值范围
案例:
byte a = 3;
byte b = 4;
byte c = (byte) (a + b);
byte d = 3 + 4;
定义:将数值范围大的一个数(变量),赋给取值范围小的变量:由大到小
强制类型转换的格式:目标的数据类型 变量名 = (目标数据类型) 值或者变量
//定义一个大类型
double m = 10.5;
//强制转换 -- 目标数据类型 变量名 = (目标数据类型) 值或者变量
int i = (int) m;
System.out.println(i);//10
Java的开发中,数据的数据类型是可以相互转换的.分两种
- 自动类型转换(隐式转换)
- 强制类型转换
int i = 10;
double sum = i + 12.9;
隐式转换
定义:将数值范围小的数或者变量赋值给一个数值范围大的变量:由小到大隐式转换
class Demo{
public void static main(String[] args) {
// 定义int类型的变量
int m = 10;
// 赋值
double d = m; //int --> double
System.out.println(d); //10.0
}
}
隐式转换的细节:
常量的优化机制
定义:在编译的时候,整数常量的计算会自动计算出来,查看在没在对应的数据类型取值范围
案例:
byte a = 3;
byte b = 4;
byte c = (byte) (a + b);
byte d = 3 + 4;
定义:将数值范围大的一个数(变量),赋给取值范围小的变量:由大到小
强制类型转换的格式:目标的数据类型 变量名 = (目标数据类型) 值或者变量
//定义一个大类型
double m = 10.5;
//强制转换 -- 目标数据类型 变量名 = (目标数据类型) 值或者变量
int i = (int) m;
System.out.println(i);//10
运算符:对常量和变量操作的符号 = + - &
表达式:常量与变量运算符拼接起来的式子 int a = 10 (= 是运算符) int b = 30; int c = a + b +10;
符号 | 作用 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
class Demo { public void static main(Stringp[] args) { /* 算术运算符 + - * / % System.out.println(1 + 1); System.out.println(10 - 3); */ //定义变量 int a = 10; int b = 30; int c0 = a + b; //40 int c1 = a - b; //-20 int c2 = a * b; //300 int c3 = a / b; //0 int c4 = a % b; //3 System.out.println(c0); System.out.println(c1); System.out.println(c2); System.out.println(c3); System.out.println(c4); } }
//键盘录入一个三位数,分别获得这个数的个位,十位,百位 /* 思路分析 1、创建键盘输入对象 2、输入一个任意三位数 个位 --- % 10 十位 --- / 10 % 10 百位 --- / 100 % 10 千位 --- / 1000 % 10 */ import java.util.Scanner; class ScannerDemo01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请示入一个任意的三位数:"); int num = sc.nextInt(); int ge = num % 10; int shi = num / 10 % 10; int bai = num /100 % 10; System.out.println("个位 = " + ge); System.out.println("十位 = " + shi); System.out.println("百位 = " + bai); } }
自增(+ +),自减(- -)需要和变量结合起来,自增(每次加一),,自减(每次减一)
单独使用,+ + | - -,放到变量之前与之后,没有区别
自增于自减可以放在变量之前也可以放在变量之后
++ | - -,参与运算
++ 或者- -在变量之前,参与运算:先自增(自减),然后再参与运算;
++ | - - 在变量之后,参与运算:先运算在(自增)(自减)
int a = 10; //11 -> 12
int b = 5;//6 -> 5
int sum = ++b + ++a + b-- + a++ + b++; //11+6+6+11+5
System.out.println("a = " + a);//12
System.out.println("b = " + b);//6
System.out.println("sum = " + sum); //39
赋值运算符就是给变量赋值,将=右边的值赋给等号左边
例: = += -= *= /= %=
int a = 10;
a += 10; // a = a + 10;(不能直接这样写表达式)(a += 10; 暗含了数据类型的强转)
class Demo{
public static void main(String[] args){
int a = 10;
a += 10;//等价于 a = a + 10;
System.out.println("a += 10 :" + a);
a *= 10;//等价于 a = a* 10;
System.out.println("a *= 10 : " + a);
}
}
>= <= != > < ==(相当于JS中的 全等)
class Demo{
public void static main(String[] args) {
int a = 10;
int b = 11;
System.out.println(a > b); //f
System.out.println(a < b); //t
System.out.println(a != b); //t
System.out.println(a <= b); //t
System.out.println(a >= b); //f
System.out.println(a == b); //f
}
}
逻辑运算符:
&: 与
|: 或
!: 非
^: 异或
目的:用来连接多个比较运算的表达式 —>最后返回boolean类型的结果
在数学中 1 < m < 10 这样写是正确的,但是在Java中是不允许这样写的。
m > 1 & m < 10 (m 必须大于 > 1 并且 & < 小于10 )
class Demo{ public void static main(String[] args) { int a = 10; int b = 20; // &: (与)连接多个关系表达式 并且条件都得成立 System.out.println(a > b & a < b); //f : t = f System.out.println(a > b & a > b); //f : f = f System.out.println(a < b & a < b); //t : t = t System.out.println(a > b & a > b); //t : f = f // |: (或) 两边只需要有一个成立 一个为 t 就为 t System.out.println(a > b | a < b); //f : t = f System.out.println(a > b | a > b); //f : f = f System.out.println(a < b | a < b); //t : t = t System.out.println(a > b | a > b); //t : f = f // !: (非) t为f;f为t System.out.println("-------------\n" + !true); System.out.println(!!true); // ^:(异或) 相同f; 不同t System.out.println(a > b ^ a < b); //f : t = t System.out.println(a > b ^ a > b); //f : f = f System.out.println(a < b ^ a < b); //t : t = f System.out.println(a > b ^ a > b); //t : f = r } }
&&:短路与 :遇到 false 直接跳出
||:短路或 :遇到 true 直接跳出,表达式为 true
功能:与 & 和 | 一样;但是,&&与|| 具有短路的效果!
class Demo{
public void static main(String[] args){
int a = 10;
int b = 20;
boolean b1 = (a > 11) & (++b >10);
boolean b2 = (a > 11) && (++b >10);
System.out.println(b);
}
}
格式:关系表达式 ? 表达式1 :表达式2
执行流程:
先判断关系表达式的结果(true | false);如果为true 返回表达式1的值,如果为false返回表达式2的值
三元运算符最终必须返回一个值,必须要有变量接收。
class Demo{
public void static main(String[] args) {
int a = 10;
int b = 20;
//输出最大值
int flag = a > b ? a : b;
System.out.println("最大值为:" + flog);
}
}
控制程序执行的流程
目的:获得我们想要的效果
- 顺序结构
- 分支结构:(if,switch)
- 循环结构: (for,while,do…while)
####分支结构的语法1:
/*
if (关系表达式) {
代码体;
}
*/
//案例:判断年龄是否可以上网(大于18)
//定义年龄
int age = 10;
if(age >= age){
System.out.println("可以上网!");
}
执行流程:
if(关系表达式){
循环语句1
}else{
循环语句1
}
执行流程:
int age = 10;
if(age >= age){
System.out.println("可以上网!");
} else{
System.out.println("不可以上网!");
}
//判断奇偶数 % ==0
//1、定义一个变量
int num = 100;
//2、判断
if(num % 2 == 0){
System.out.println(num + "是哦数");
} else {
System.out.println(num + "不是偶数");
}
多条件判断
if(条件表达式1){
代码快1;
}else if(条件表达式2){
代码块2;
}
...
else{
代码块3;
}
案例需求:对班级的成绩进行分类
90 — 100 :A
70 — 90(不包含90):B
60 — 70 (不包含70):C
60 以下:D
import java.util.Scanner; class Demo{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入成绩(0 ~ 100):"); int score = sc.nextInt(); if(score >= 0 && score <=100){ if(score >= 90 && score <= 100){ System.out.println("A"); } else if(score >= 70 && score < 90) { System.out.println("B"); } else if(score >= 60 && score < 70) { System.out.println("C"); } else { System.out.println("D"); } } else { System.out.println("请输入有效成绩~~~"); } } }
执行流程:
语法结构;
switch(条件表达式|变量){
case 值1:
代码块;
break;
case 值2:
代码块;
break;
…
default:
代码块;
break;
}
格式说明:
- 表达式 | 变量 byte、short、char、int、枚举、字符串
- case: 后面的值需要和switch后面的值进行匹配
- break: 结束switch语句
- default: 以上所有的值都没有匹配成功就会执行default 类似于if中的else
执行流程:
- 先获取switch后面的值
- 与case后面的值进行匹配;
- 匹配成功执行下方的代码块,然后执行break,结束switch循环
- 如果都没有匹配成功就会执行default语句块中的内容;
/* 需求:键盘录入星期数,显示今天的减肥活动 减肥计划: 周一:跑步 周二:游泳 周三:慢走 周四:动感单车 周五:拳击 周六:爬山 周日:好好吃一顿!!! */ import java.util.Scanner; class Demo{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入星期:"); int week = 0; 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("请输入正确的星期:"); return; } } }
switch–case的穿透去掉case中的break,那么程序不会结束,会继续向下执行,知道default
循环:重复的做一件事;for循环、 do…while循环、 while循环
格式:
for(初始化语句;条件判断;控制条件) {
循环体;
}
for循环执行流程图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4iQ4Uo0U-1684429487403)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230519004452498.png)]
for的拆分
- 初始化语句:for循环的初始条件,int i = 1;
- 条件判断语句:循环的执行与结束条件
- 循环体:重复的做某件事;
- 控制条件:控制执行的次数!!!
for循环的执行流程:
- 先执行初始化语句,并且只会执行一次
- 执行条件判断语句:boolean
- 如果条件是:false—> 循环就直接结束
- 如果条件是:true —> 才会进入循环体中执行 循环体
- 执行控制条件 ++ | - -
class Demo{ public static void main(String[] args){ for(int i = 0;i < 5:i++){ System.out.println("HelloWord!!!"); } //案例:求1-5之和 int sum = 0; for(int i = 0;i < 5:i++){ sum += i; } System.out.println(sum); sum = 0; for(int i = 1;i <= 100;i++){ if(i % 2 == 0){ sum += i; } } System.out.println(sum); //优化 for(int i = 0;i <= 100;i+=2) { sum += i; } System.out.println(sum); } }
/* 所谓水仙花:1、三位数 2、个位十位百位的立方和等于它本身 里:153 = 1*1*1 = 5*5*5 + 3*3*3 需求:打印所有的水仙花数 思路分析: 1、抽取自然数中所有的三位数 for(int i = 100; i < 1000;i++){ 判断个位的立方 + 十位的立方 + 百位的立方 = 本身 } 2、取余每一位数 3、输出 */ class TheNumberOfDaffodilsDemo{ public static void main(String[] args) { for(int i = 100;i < 1000) { int sum = 0; int best = i /100 % 10; int ten = i / 10 % 10; int num = i % 10; if((best * best * best + ten * ten * ten + num * num * num) == i) { System.out.println("水仙花数有:" + i); sum += i; } } System.out.println("一共有" + sum + "个水仙花"); } }
###5.5、循环-while
格式:
初始条件;
while(条件判断){
循环体;
控制条件;
}
执行流程:
- 加载初始条件
- 获得条件判断结果(true | false)
- 如果及如果为false循环结束
- 如果结果为true执行循环体的内容
- 执行控制变量;– 继续进行条件判断
总结:执行流程就是1,2,3,4,5 —> 2,3,4,5 —> 2,3,4,5…
//案例:使用while循环输出5便 helloworld
class demo{
public static void main(String[] args){
int i = 1;//初始条件
while(i <= 5){//判断
System.out.println("HelloWorld");//循环体
i++;//控制变量
}
}
}
####5.5.1、while的案例:
需求:世界上的最高峰是珠穆朗玛峰(8844.43米 = 8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米,请问我这多少次,可以折成珠穆朗玛峰的高度。
/*
案例分析:
1、定义一个初始条件:double paper = 0.1;统计变量 int count = 0;
2、循环的终止条件(paper <= 8844430){循环体;count++;控制语句paper *= 2;}
3、sout输出
*/
double paper = 0.1;
int count = 0;
while(paper <= 8844430) {
count++;
paper *= 2;
}
System.out.println(count + "次等于珠穆朗玛峰的高度;");
结构:
- 初始条件 do{
- 循环体;
- 控制变量
- }while(条件判断);
执行流程:
- 执行初始化条件
- 执行循环体
- 执行控制变量
- 条件判断(true | false)
- 为true回到2继续执行;false就直接退出循环
//使用do...while输出5遍HelloWorld
int i = 1;
do{
System.out.println("HelloWorld");
i++;
} while(i <= 4);
方法:是具有独立功能的代码快组成一个整体,使其具有特殊功能的代码集。
方法:具有独立功能的代码块
目的:提高代码的复用性
方法需要先定义,才能调用
定义方法的通用格式:
修饰符 返回值类型 方法名(参数列表) {
方法体;
return 返回值:
}
//格式
/*
修饰符 void 方法名(){
方法体;
}
*/
public static void printArray(){
方法体;
}
方法定义完,需要调用,才会输出
在带有static关键字时直接调用方法名
public static void main(String[] args) {
testStudy();
}
//定义一个学习方法
public static void testStudy(){
System.out.println("我在学习,请勿打扰");
testEct();
}
//定义一个吃饭的方法
public static void testEct(){
System.out.println("我在吃饭,劝你善良");
}
- main方法与自定义方法是平级关系,所以方法不能嵌套
- main方法是程序主入口,所以我们在main方法中调用其他方法
方法练习:
案例:判断奇偶数
public class Exercise01 {
public static void main(String[] args) {
testEventNumber(22);
}
public static void testEventNumber(int num){
System.out.println(num % 2 == 0 ? "偶数" : "奇数");
}
}
public static void 方法名 (参数1) {
方法体;
}
public static void 方法名 (参数1, 参数2, 参数3...) {
方法体;
}
参数列表:
public static void print(int a,boolean b) {
方法体;
}
//调用有参数的方法
方法名(参数);
print(10,true)
形参:方法定义传递的参数 — 形式参数
实参:方法调用传递的参数 — 实参(10,a(必须是已经赋值了的变量))
//打印 x - y 之间所有的奇数 /* 1、根据格式定义方法,方法名printOddNumber 2、定义方法的形参(参数列表)两个 int x y 3、方法体 for -- x --y 4、判断 对 !(2 % == 0) 奇数 5、在main方法中调用此方法 */ public class MethodTest002 { public static void main(String[] args) { printOddNumber(1 ,100); } public static void printOddNumber(int x,int y){ for (int i = x; i < y; i++) { if (!(i % 2 == 0)) { System.out.print(i + " "); if (i % 9 == 0) { System.out.println(); } } } } }
####6.2.5、带返回值的方法的定义
定义格式:
public static 返回值的数据类型 方法名 (形参) {
方法体;
return 返回值;
}
- 返回值的数据类型:就是return后面跟的数据对印的数据类型(隐式转换)
- 形参:1.参数据数据类型、2.参数的个数、3.参数据先后顺序
- return:关键字,用于返回方法的结果,还可以结束方法
//实例:
public static int getSum(int a,int b){
int sum = a + b;
return sum;
}
getSum(20,40);//没有实质性的意义
//有返回值的方法,建议使用变量接收
/* 获取两个数的最大值(方法) 思路分析: 1、定义一个方法并且带有返回值int求出最大值 testMax() 2、定义形参 int num1,int num2 3、if 进行比较 获取到最大值 4、main方法调用 */ public class Exercise02 { public static void main(String[] args) { System.out.println("请输入一个数"); int num1 = new Scanner(System.in).nextInt(); System.out.println("请输入一个数"); int num2 = new Scanner(System.in).nextInt(); int max = testMax(num1, num2); System.out.println(max); } public static int testMax(int num1, int num2) { /*if (num1 > num2) { return num1; } else { return num2; }*/ int max = num1 > num2 ? num1 : num2; return max; } }
方法的通用格式
public static 返回值类型 方法名(参数列表) {
方法体;
return 返回值;
}
- public static 关键字,它的作用就是修饰它的访问范围
- 返回值类型
- 方法有返回值,就需要定义返回值类型
- 没有返回值的方法就是void
- 方法名(标识符):起的名字要见名知意,遵循小驼峰getNum() getName()
- 参数列表:
- 参数的数据类型
- 参数的个数
- 参数的位置
- 方法体:完成该功能的代码块
- return:用于返回方法的结果
定义方法须知两个明确
调用方法
方法不能嵌套
return
方法重载:
- 在同一个类中
- 存在同名的方法
- 参数列表不同
方法重载的优势:不需要记住大量的、繁琐的方法名字
/* 需求:使用方法重载,设计比较两个整数是否相同的方法,减轻哦那个全整数类型(byte,short,int,long) 思路分析: 1、确定返回值类型 boolean 2、参数列表 两个不同数据类型 */ public class ExerciseMethod01 { public static void main(String[] args) { System.out.println(testCompare((byte) 10, (byte) 10)); System.out.println(testCompare((short) 10, (short) 10)); System.out.println(testCompare(10, 10)); System.out.println(testCompare(10L, 10L)); } public static boolean testCompare(byte b1,byte b2){ System.out.println("---byte---"); return b1 == b2; } public static boolean testCompare(short s1,short s2){ System.out.println("---short---"); return s1 == s2; } public static boolean testCompare(int i1, int i2){ System.out.println("---int---"); return i1 == i2; } public static boolean testCompare(long l1,long l2){ System.out.println("---long---"); return l1 == l2; } }
回顾:
可变长参数的引出
定义一个2数之和;定义一个3数之和;定义一个4数之和;定义一个5数之和 …
参数列表太繁琐。。。不利于代码的健壮性
直接在参数列表放一个(int…arr)可变长参数 … 大大降低了代码的冗余
public static int testSum(int...arr){
//1、定义求和
int sum = 0;
//2、遍历数组
for(int i = 0;i < arr.length;i++) {
sum += arr[i];
}
//3、返回总和
return sum;
}
方法
定义方法:
public static 返回值类型 方法名(参数列表|形参){
方法体;
return 返回值;
}
使用方法
方法细节
方法的形参与实参
方法的重载(条件)
参数传递
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。