Java概述
众所周知Java是一门编程语言,是一种可以撰写跨平台应用软件的面向对象的程序设计语言。那么使用Java到底能用来编写什么呢?主要用于1.后端服务,2.Web开发领域 例如:淘宝、京东等等。
背景
Java是由Sun Microsystems公司推出的Java面向对象程序设计语言 和Java平台的总称。Java由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为Java,并重新设计用于开发Internet应用程序。
DOS命令
Windows操作系统中编译、运行都需要了解常用DOS命令,所以下面我们来学习一下常用DOS命令 弹出DOS控制台的方法是:win+R,然后输出cmd
JDK与JRE
- JDK:它是Java开发运行环境,在程序员的电脑上当然要安装JDK;
- JRE:Java Runtime Environment它是Java运行环境,如果你不需要开发只需要运行Java程序,那么你可以安装JRE。例如程序员开发出的程序最终卖给了用户,用户不用开发,只需要运行程序,所以用户在电脑上安装JRE即可。
- JDK包含了JRE。
跨平台特性
- 平台指的是操作系统 (Windows,Linux,Mac)。
- Java程序可以在任意操作系统上运行,一次编写到处运行
- 实现跨平台需要依赖Java的虚拟机 JVM (Java Virtual Machine)
Java编写流程
- 源文件:编写Java源文件(我们也称之为源代码文件),它的扩展名为.java;
- 编译:然后通过编译器把源文件编译成字节码文件,字节码文件扩展名为.class;
- 运行:最后使用解释器来运行字节码文件。
源文件编写
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
分别是:类、主方法,以及输出语句。
Public权限(后面细讲)
关键字static
静态状态,在不创建对象的前提下也可以访问
主方法是jvm虚拟机直接调用的,测试类中,不需要定义成员变量,也不需要有对象存储数据,可以直接调用主方法,主方法没有必要声明为非静态;jvm是C语言写的,是一个面向过程的语言,不能创建对象。
关键字void
空,返回值类型为空
主要使用java语言操作各种数据,如果主方法有返回值,返回给调用者(jvm虚拟机),返回给jvm虚拟机之后,我们没有办法操作这个数据了,没有任何意义。
main方法:
主要的,不是一个关键字
在jvm虚拟机中,要执行某个类的时候,只执行main方法,在jvm的代码中,已经将要访问的方法,程序的唯一入口,写死了
String[] args形式参数
字符串类型的数组
在执行主方法的时候,可以传入一些参数,将来在主方法中,可以接收到这些参数
Args是一个参数名称,任意修改
String[]的中括号也可以写到args后面
注释、关键字与标识符
Java中提供了三种注释方式,分别是:
- 单行注释 //注释内容
- 多行注释 /*注释内容*/
- 文档注释 /**注释内容*/
关键字
关键字是被Java语言赋予特殊含义,具有专门用途的单词,比如之前接触的class,public,static,void均为Java已经预设好的。
标识符
在Java程序中,除了关键字以外基本上都是标识符了。
其实标识符就是名称的意思,所有的名称都统称为标识符。Java中经常要定义类、方法、变量,在定义他们时总要给它们起名字,这些名字就是标识符。
- 组成元素
- 英文字符: a-zA-Z
- 数字: 0-9
- 符号: _与$
- 标识符规则
- 数字不能开头
- 不可以使用关键字
- 严格区分大小写,不限制长度起名时,尽量达到见名知意
程序概述
软件是什么?其实软件就是用来处理数据的程序。可以把软件分为两个部分,一个部分是“数据”;另一个部分是“数据处理的逻辑”
程序 = 数据 + 逻辑
数据
这是数据
//定义的变量,存放在键盘输入的值(基本工资)
float a;
//定义的变量,存放物价补贴
float b;
//定义的变量,存放房租补贴
float c;
//定义的变量,存放工资总和
float d;
//定义的变量,存放姓名学号
逻辑
这是逻辑
b=a/100*40;//计算物价补贴
c=a/100*25;//计算房租补贴
基本数据类型
基本数据类型是Java语言中内置的类型,分别是整数类型、小数类型、字符类型、布尔类型。这四类基本类型是最简单、最基础的类型
常量
Java中的数据量分为常量和变量,我们先来学习常量!
常量就是不变的数据量,例如100就是常量,任何数据量都有其类型,那么100这个常量是什么类型呢?回忆一下基本类型中有四类,分别是整数、小数(浮点数)、字符、布尔。那么100是哪一类型呢?没错,就是整数常量!!!
- 整数类型
- 十进制表示方式:正常数字 如 13、25等
- 二进制表示方式:以0b(0B)开头 如0b1011 、0B1001
- 十六进制表示方式:以0x(0X)开头 数字以0-9及A-F组成 如0x23A2、0xa、0x10
- 八进制表示方式:以0开头 如01、07、0721
- 小数类型
- 如1.0、-3.15、3.168等
- 布尔类型
- true、false
- 字符类型
- 如'a','A', '0', '家'
- 字符必须使用’’ 包裹,并且其中只能且仅能包含一个字符。
- 字符串类型
- 字符串String类型是一种引用类型,我们先了解作为常量类型的使用方式
- 如“我爱Java”,“0123”,“”,“null”
- 字符串必须使用“”包裹,其中可以包含0~N
变量
变量是内存中装载数据的小盒子,你只能用它来存数据和取数据。
计算机存储单元
变量是内存中的小容器,用来存储数据。那么计算机内存是怎么存储数据的呢?无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。
当程序需要使用存储空间时,操作系统最小会分派给程序1个字节,而不是1个位。你可能会说,如果程序只需要1个位的空间,系统分派不能只分派1个位吗?答案是不能!这就像你只需要1支烟,你到商店去买烟,商店分派的最小单元是1盒(20支),他不可能卖给你1支烟。
你可能会想,1个字节(8位)可以存储很大的数值了,1位最大是9那么8位最大值为99999999。你错了,因为计算机是采用二进行存储的,而不是我们生活中常用的十进制。所以1个字节存储的最大数据是11111111的二进制数。
除了字节外还有一些常用的存储单位,大家可能比较熟悉,我们一起来看看:
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
变量必须要有明确的类型,什么类型的变量装载什么类型的数据。
常量与类型
java中默认的整数类型是int类型
浮点类型的常量也可使用后缀,在Java中所有没有后缀以及使用“D”后缀(小写也可以,但建议使用大写)的小数都是double类型;float类型常量必须添加“F”后缀(小写也可以,但建议使用大写)java中默认的浮点类型是double类型
- 123没有后缀,所以它是double类型;
- 123.28D为double类型;
- 123.26F为float类型
变量定义格式:
数据类型 变量名 = 数据值;
int a = 100;
数据类型转换
按照数据范围从小到大依次列出
byte -> short -> int -> long -> float -> double
自动类型转换
表示范围小的数据类型转换成范围大的数据类型,这种方式称为自动类型转换
自动类型转换格式:
范围大的数据类型 变量 = 范围小的数据类型值;
int i = 100;
double d2 = i;
强制类型转换
表示范围大的数据类型转换成范围小的数据类型,这种方式称为强制类型转换
强制类型转换格式:
范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值;
int i = (int)6.718; //i的值为6
运算符
运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数。
算术运算符
- 加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
- 除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
- “%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
- 整数做被除数,0不能做除数,否则报错。
算数运算符++、--的使用
i++ 先赋值在运算,例如 a=i++,先赋值a=i,后运算i=i+1,所以结果是a==1
++i 先运算在赋值,例如 a=++i,先运算i=i+1,后赋值a=i,所以结果是a==2
赋值运算符
比较运算符
比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false。
逻辑运算符
逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false。
三元运算符
- 格式:
(条件表达式)?表达式1:表达式2;
如果条件表达式为true,就输出打印表达式1的内容
如果条件表达式为false,就输出打印表达式2的内容
int a =10,b = 20 ;
//(条件表达式)?表达式1:表达式2;
int c= a>b?a:b //a大于b吗?如果大于c=a,否则c=b
//输出大的
System.out.println(c);
运算符优先级
引用数据类型
引用数据类型非常多,大致包括:类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型
例如,String类型就是引用类型,Scanner类是引用数据类型的一种
简单来说,所有的非基本数据类型都是引用数据类型
引用数据类型的使用
- 数据类型 变量名 = new 数据类型();
每种引用数据类型都有其功能,我们可以调用该类型实例的功能。
变量名.方法名();
例如:完成用户键盘录入
//导包:
import java.util.Scanner;
//创建对象实例:
Scanner sc = new Scanner(System.in);
//调用方法:
int i = sc.nextInt();// 用来接收控制台录入的数字
String s = sc.next();// 用来接收控制台录入的字符串
Java生成随机数(random()和Random类)
随机数类Random
我们来学习下,用来产生随机数的类Random,它也属于引用数据类型。
这个Random类,它可以产生多种数据类型的随机数,在这里我们主要介绍生成整数与小数的方式。
- 方法简介
public int nextInt(int maxValue) 产生[0,maxValue)范围的随机整数,包含0,不包含maxValue;
public double nextDouble() 产生[0,1)范围的随机小数,包含0.0,不包含1.0。
- Random使用方式:
- import导包:所属包java.util.Random
- 创建实例格式:Random 变量名 = new Random();
public static void main(String[] var0) {
Random var1 = new Random();
double var2 = var1.nextDouble();
double var4 = var1.nextDouble() * 7.0;
int var6 = var1.nextInt(10);
int var7 = var1.nextInt(18) - 3;
long var8 = var1.nextLong();
boolean var10 = var1.nextBoolean();
float var11 = var1.nextFloat();
System.out.println("生成的[0,1.0]区间的小数是:" + var2);
System.out.println("生成的[0,7.0]区间的小数是:" + var4);
System.out.println("生成的[0,10]区间的整数是:" + var6);
System.out.println("生成的[-3,15]区间的整数是:" + var7);
System.out.println("生成一个随机长整型值:" + var8);
System.out.println("生成一个随机布尔型值:" + var10);
System.out.println("生成一个随机浮点型值:" + var11);
System.out.print("下期七星彩开奖号码预测:");
for(int var12 = 1; var12 < 8; ++var12) {
int var13 = var1.nextInt(9);
System.out.print(var13);
}
}
流程控制语句
选择结构
if语句
其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句
if(布尔表达式)
{
//如果布尔表达式为true将执行的语句
}
public class Test {
public static void main(String args[]){
int x = 10;
if( x < 20 ){
System.out.print("我是if语句");
}
}
}
//运行结果如下我是if语句
if…else语句
语义是: 如果表达式的值为真,则执行代码块1,否则执行代码块2
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
public class Test {
public static void main(String args[]){
int x = 30;
if( x < 10 ){
System.out.print(" if 语句");
}else{
System.out.print(" else 语句");
}
}
}
//运行结果:else 语句
if…else if…else语句
语义是:依次判断表达式的值,当出现某个值为真时,则执行对应代码块,否则执行代码块n。意:当某一条件为真的时候,则不会向下执行该分支结构的其他语句。
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
public class Test {
public static void main(String args[]){
int x = 30;
if( x == 10 ){
System.out.print("X is 10");
}else if( x == 20 ){
System.out.print(" X is 20");
}else if( x == 30 ){
System.out.print(" X is 30");
}else{
System.out.print("这是 else 语句");
}
}
}
//运行结果如下:X is 30
选择 switch
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
public class Test {
public static void main(String args[]){
char grade = 'a';
switch(grade)
{
case 'a' :
System.out.println("优秀");
break;
case 'b' :
case 'c' :
System.out.println("良好");
break;
case 'd' :
System.out.println("及格");
break;
default :
System.out.println("未知等级");
}
System.out.println("你的等级是 " + grade);
}
}
以上代码编译运行结果如下:
优秀
你的等级是 a
switch语句时还应注意以下几点:
(1)在case后的各常量表达式的值不能相同,否则会出现错误。
(2)在case子句后如果没有break;会一直往后执行**一直到遇到break;**才会跳出switch语句。
(3)switch后面的表达式语句只能是整型或者字符类型。
(4)在case后,允许有多个语句,**可以不用{}**括起来。
(5)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
(6)default子句可以省略不用(default只用在switch语句中,代表默认处理,代表着默认值,default的作用就是switch语句里所有的case都不成立时所要执行的语句)。
循环
循环 while
while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体代码块。
while( 布尔表达式 ) {
//循环内容
}
public class Test {
public static void main(String[] args) {
int x = 10;
while( x < 14 ) {
System.out.print("x : " + x );
x++;
System.out.print("\n");
}
}
}
以上实例编译运行结果如下:
x : 10
x : 11
x : 12
x : 13
- while语句中的表达式一般是关系表达或逻辑表达式,当表达式的值为假时不执行循环体,反之则循环体一直执行。
- 一定要记着在循环体中改变循环变量的值,否则会出现死循环(无休止的执行)。
- 循环体如果包括有一个以上的语句,则必须用{}括起来,组成复合语句。
循环语句do…while
它先执行循环中的执行代码块,然后再判断while中表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。
do {
//代码语句
}while(布尔表达式);
public class Test {
public static void main(String[] args){
int x = 11;
do{
System.out.print("x : " + x );
x++;
System.out.print("\n");
}while( x < 10 );
}
}
以上实例编译运行结果如下:
x : 11
循环语句for
它的执行过程如下:
- 执行表达式1,对循环变量做初始化;
- 判断表达式2,若其值为真(非0),则执行for循环体中执行代码块,然后向下执行;若其值为假(0),则结束循环;
- 执行表达式3,(i++)等对于循环变量进行操作的语句;
- 执行for循环中执行代码块后执行第二步;第一步初始化只会执行一次。
- 循环结束,程序继续向下执行
for(初始化; 布尔表达式; 更新) {
//代码语句
}
public class Test {
public static void main(String[] args) {
for(int x = 10; x < 13; x = x+1) {
System.out.print("x : " + x );
System.out.print("\n");
}
}
}
以上实例编译运行结果如下:
x : 10
x : 11
x : 12
循环语句增强for
声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
for(声明语句 : 表达式)
{
//代码句子
}
public class Test {
public static void main(String[] args){
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ){
System.out.print( x );
System.out.print(",");
}
System.out.print("\n");
}
}
以上实例编译运行结果如下:
10,20,30,40,50,
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
结束语句之break语句
那么循环5次的时候,需要中断不继续训练。在Java语言中,可以使用break
语句进行该操作.
使用break语句时注意以下几点:
(1)在没有循环结构的情况下,break不能用在单独的if-else语句中。
(2)在多层循环中,一个break语句只跳出当前循环。
public class Test {
public static void main(String[] args) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ) {
// x 等于 30 时跳出循环
if( x == 30 ) {
break;
}
System.out.print( x );
System.out.print("\n");
}
}
}
以上实例编译运行结果如下:
10
20
结束语句之continue语句
那么循环5次的时候,需要中断后继续训练。在Java语言中,可以使用continue
语句进行该操作
(1)continue语句的作用是结束本次循环开始执行下一次循环。
break语句与continue语句的区别是:
(1)break是跳出当前整个循环,continue是结束本次循环开始下一次循环。
public class Test {
public static void main(String[] args) {
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers ) {
if( x == 30 ) {
continue;
}
System.out.print( x );
System.out.print("\n");
}
}
}
以上实例编译运行结果如下:
10
20
40
50
循环结构之三种循环比较
while, do-while和for三种循环在具体的使用场合上是有区别的,如下:
1在知道循环次数的情况下更适合使用for循环;
2在不知道循环次数的情况下适合使用while或者do-while循环:
3如果有可能一次都不循环应考虑使用while循环
4如果至少循环一次应考虑使用do-while循环。
循环结构之多重循环
多重循环就是在循环结构的循环体中又出现循环结构。
在实际开发中一般最多用到三层重循环。
(1)因为循环层数越多,运行时间越长,程序越复杂,所以一般用2-3层多重循环就可以了。另外不同循环之间也是可以嵌套的。
(2)多重循环在执行的过程中,外层循环为父循环,内层循环为子循环,
(3)父循环一次,子循环需要全部执行完,直到跳出循环。**父循环再进入下一次,子循环继续执行…
数组
一维数组
一维数组是指一组数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。
在Java中,可以使用以下格式来定义一个一维数组。如下
格式1:
数据类型[] 数组名 = new 数据类型[数组长度];
格式2:
数据类型[] 数组名 = new 数据类型[]{元素值1,元素值2,..};
格式3:
数据类型[] 数组名 = {元素值1,元素值2,..};
数据类型[] 数组名 = new 数据类型[元素个数或数组长度];
//数据类型[] 数组名 = new 数据类型[元素个数或数组长度];
int[] x = new int[100];
//text2
int[] x; // 声明一个int[]类型的变量,图1.1为内城图
x = new int[100]; // 创建一个长度为100的数组图,1.2为内城图
数组在创建过程中内存的分配情况。
图1.1,int[] x; 声明了一个变量x,该变量的类型为int[],即一个int类型的数组。变量x会占用一块内存单元,它没有被分配初始值
图1.2,x = new int[100]; 创建了一个数组,将数组的地址赋值给变量x。在程序运行期间可以使用变量x来引用数组,这时内存中的状态会发生变化
初始化数组
数组的初始化有两种方式静态动态 如下:
//动态初始化//
//创建一个数组,里面可以存放30个int数据
int[] A = new int[30];
//创建一个数组,能存放10个double类型的数据
double[] B = new double[10];
//创建一个数组,能存放5个字符串
String[] C = new String[5];
// ##################################################################
//静态初始化//
int[] D = new int[]{1, 2, 3};
//创建一个数组,用来装字符串:"hello"、 “world”
String[] E = new String[]{"hello", "world"};
//数组定义的省略格式//
int[] F = {1, 2, 3};
数组的遍历
public class ArrayDemo04 {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组
// 使用for循环遍历数组的元素
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); // 通过索引访问元素
}
}
}
二维数组
二维数组如名一样是二维数据的集合,数组中的每个数据被称作元素。在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致。
在Java中,可以使用以下格式来定义一个二维数组。如下方式
格式1
数据类型[][] 数组名 = new 数据类型[m][n];
m: 代表二维数组中一维数组的个数
n: 代表每个一维数组中元素的个数
格式2:
数据类型[][] 数组名 = new 数据类型[m][];
m: 代表二维数组中一维数组的个数
每一个一维数组通过赋值来确定数组长度
格式3:
数据类型[][] 数组名 = {{元素值1,元素值2,..},{元素值1,元素值2,..},..};
数据类型[] [] 数组名 = new 数据类型[元素个数或数组长度][元素个数或数组长度];
//数据类型[] [] 数组名 = new 数据类型[元素个数或数组长度][元素个数或数组长度];
int[][] arr = new int[4][3];
定义了一个4*3的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组
数据类型[] [] 数组名 = new 数据类型[元素个数或数组长度][];
//数据类型[] [] 数组名 = new 数据类型[元素个数或数组长度][];
int[][] arr = new int[3][];
数据类型[] [] 数组名 = {{},{}...};
//数据类型[] [] 数组名 = {{},{}...};
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
类
具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述
ava类的定义通常以关键字class开始,后面紧跟类的名称。类的名称通常以大写字母开头,遵循驼峰命名法。类的定义通常包含在一对花括号{}中。
- 类的定义格式
public class Person {
// 属性
private String name;
private int age;
// 构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 方法
public void sayHello() {
System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
}
}
属性
构造方法
构造方法的主要作用就是为对象成员变量赋初始值,总是与new运算符一起使用在创建对象的语句中——也就是说,只要你new一个对象出来,就会相应地调用这个类的构造方法。有参数的构造方法可以对对象进行初始化,但建议写了有参的构造方法后再写一个无参的空的构造方法,便于创建一个对象而不给它的成员变量赋初值。要注意,自己写了有参的构造方法,编译器是不会再补充一个缺省构造方法的。
方法
在我们的日常生活中,方法可以理解为要做某件事情,而采取的解决办法。在java中,方法就是用来完成解决某件事情或实现某个功能的办法
在Java中,声明一个方法的具体语法格式如下:
- 修饰符:方法的修饰符比较多,有对访问权限进行限定的,
- 返回值类型:用于限定方法返回值的数据类型
- 参数名:是一个变量,用于接收调用方法时传入的数据
- 参数类型:用于限定调用方法时传入参数的数据类型
- return关键字:用于结束方法以及返回方法指定类型的值
- 返回值:被return语句返回的值,该值会返回给调用者(要与返回类型一致)
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,......){
执行语句
………
return 返回值;
}
比如: 无返回值有参数方法,如打印指定M行,每行N个*号的矩形
public class text{
public void tex(int m, int n){
//打印M行星
for (int i=0; i<m; i++) {
//每行中打印N颗星
for (int j=0; j<n; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
方法的重载
Java中方法的重载,就是在一个类中,有相同的方法名称,但形参不同的方法。
方法重载的规则
- 方法名称必须相同
- 参数列表必须不同(参数个数不同、或参数类型不同、参数排列顺序不同等)。
- 方法的返回类型可以相同也可以不相同。
- 仅仅返回类型不同,不足以称为方法的重载。
- 同一个类中,不允许两个方法的方法名称和参数列表都相同
比如:我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法。接下来通过一个案例来实现对两个整数相加、对三个整数相加以及对两个小数相加的功能
public class MethodDemo02 {
public static void main(String[] args) {
// 下面是针对求和方法的调用
int sum1 = add01(1, 2);
int sum2 = add02(1, 2, 3);
double sum3 = add03(1.2, 2.3);
// 下面的代码是打印求和的结果
System.out.println("sum1=" + sum1);
System.out.println("sum2=" + sum2);
System.out.println("sum3=" + sum3);
}
// 下面的方法实现了两个整数相加
public static int add01(int x, int y) {
return x + y;
}
// 下面的方法实现了三个整数相加
public static int add02(int x, int y, int z) {
return x + y + z;
}
// 下面的方法实现了两个小数相加
public static double add03(double x, double y) {
return x + y;
}
}
//运行结果
sum1=3
sum2=6
sum3=3.5
参数传递
参数传递,当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了。这种传递方式,我们称为参数传递。
- 定义方法参数列表中的变量,称为形式参数
- 调用方法传入给方法的数值,称为实际参数
public class ArgumentsDemo01 {
public static void main(String[] args) {
int a=5;
int b=10;
change(a, b);//调用方法时,传入的数值称为实际参数
System.out.println("a=" + a);
System.out.println("b=" + b);
}
public static void change(int a, int b){//方法中指定的多个参数称为形式参数
a=200;
b=500;
}
}
参数传递图解
面向对象
请看下个博客
目录:
1面向对象
2类与对象 抽象类
3封装,继承 ,多态
4构造方法,this关键字,super关键字,final关键字,static关键字
5匿名对象
6包的声明与访问
7接口
8异常
9IO
10 反射注解
11 多线程
本文章为个人学习笔记,文章借鉴其余文章,图片,如有侵权联系删除