文章目录
java中的方法方法的概念方法的定义方法重载
java中的数组数组的概念一维数组的定义和初始化一维数组的应用1.按照固定的格式[元素1, 元素2, 元素3, 元素4]数组的遍历2.数组中的最值问题3.键盘录入5个数据,组成一个数组(不重复),查询指定元素在数组中第一次出现的索引值!4.数组的逆序5.冒泡排序6.选择排序
数组中常见的异常二维数组的定义和初始化二维数组的应用1.二维数组的遍历2.杨辉三角形
参数传递中的一些注意事项
java中的方法
方法的概念
使用{}将代码包裹起来,并给这个代码起一个名字:方法名
---->以后直接用这个方法名调用 {}代码块
方法的定义
如何定义方法
?
1)有返回值类型的方法的定义
2)没有返回值类型的方法的定义
a
.有返回值类型的方法的定义
固定格式
: public static 返回值类型 方法名
(形参列表
){
业务需求
...
return 结果
;
}
有返回值类型的方法调用
:
a
)单独调用
b
)输出调用
c
)赋值调用
b
.没有具体返回值类型的方法定义
public static void 方法名
(形参列表
){
直接输出或者其他的业务操作
}
没有返回值类型的方法调用
:
一般为直接输出调用
定义有具体返回值类型的方法的定义的注意事项
-----
1) 方法和方法是平级
,不能进行嵌套
2) 定义方法的两个明确
明确返回值类型
明确参数类型和参数个数
3)定义方法的时候
必须携带参数类型
public static int add(int a
,int b
)
需求
:
求两个数据的和
,使用方法完成这个需求
class FunDemo{
public static void main(String
[] args
){
int a
= 10;
int b
= 20;
int add
= sum(a
,b
);
System
.out
.println(add
);
}
public static int sum(int a
, int b
){
int x
= a
+ b
;
return x
;
}
}
方法重载
方法重载:
overload
方法名相同,参数列表不同,与返回值无关
参数列表不同:
1)参数类型不同,参数个数相同
2)参数类型相同,参数个数不同
3)参数类型不同,参数个数不同
java中的数组
数组的概念
数组: 引用数据类型
数组: 是可以存储元素的一种容器!
前提: 元素的数据类型必须一致的!
一维数组的定义和初始化
格式:
数据类型[] 数组名称 ;
数据类型 数组名称[] ;
举例:
int[] arr; (习惯于第一种) 定义了一个int类型数组arr变量
int arr[] ;定义了一个int类型的arr数组
数组的初始化:
1)动态初始化:指定了数组长度,系统默认给定数组的元素值!
2)静态初始化:指定了具体的元素的内容,系统默认指定数组的长度!
数组的静态初始化 :指定数组的元素内容,系统给它默认长度
格式:
标准格式:
数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3....} ;
数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3....} ;
举例:
int[] arr = new int[]{11,22,33} ;
简化格式:
数据类型[] 数组名称 ={元素1,元素2,元素3....} ;
数据类型 数组名称[] ={元素1,元素2,元素3....} ;
举例:
int[] arr = {1,2,3} ;
动态初始化:
格式:
数据类型[] 数组名称 = new 数据类型[数组长度] ;
数据类型 数组名称[] = new 数据类型[数组长度] ;
举例:
int[] arr = new int[3] ; //创建了一个数组对象,分配3个长度
int arr[] = new int[2] ;//.创建了一个数组对象,分配2个长度
数组中元素的的访问方式:
数组名称[角标]来访问
角标(下标/索引):都是从0开始记录元素的!
一维数组的应用
1.按照固定的格式[元素1, 元素2, 元素3, 元素4]数组的遍历
public static void print(int arr
[]){
System
.out
.print("[");
for(int i
= 0;i
< arr
.length
;i
++){
if(i
== arr
.length
-1){
System
.out
.print(arr
[i
]+"]");
}else{
System
.out
.print(arr
[i
]+", ");
}
}
}
2.数组中的最值问题
class Test2{
public static void main(String
[] args
){
int[] arr
= {13,87,65,24,57} ;
int max
= getMax(arr
) ;
System
.out
.println("数组中的最大值是:"+max
) ;
System
.out
.println("--------------------------------") ;
int min
= getMin(arr
) ;
System
.out
.println("数组中的最小值是:"+min
) ;
}
public static int getMin(int[] arr
){
int min
= arr
[0] ;
for(int x
=1 ; x
< arr
.length
; x
++){
if(arr
[x
] < min
){
min
= arr
[x
] ;
}
}
return min
;
}
public static int getMax(int[] arr
){
int max
= arr
[0] ;
for(int x
= 1 ; x
< arr
.length
; x
++){
if(arr
[x
] > max
){
max
= arr
[x
] ;
}
}
return max
;
}
}
3.键盘录入5个数据,组成一个数组(不重复),查询指定元素在数组中第一次出现的索引值!
import java
.util
.Scanner
;
class Test2{
public static void main(String
[] args
){
Scanner sc
= new Scanner(System
.in
);
int[] arr
= new int[5];
init(arr
);
System
.out
.println("当前数组为:");
print(arr
);
System
.out
.println("\n"+"需要查询该数组的元素:");
int key
= sc
.nextInt();
int index
= query(arr
,key
);
System
.out
.println(index
);
}
public static int query(int arr
[],int key
){
int index
= -1;
for(int i
= 0;i
< arr
.length
;i
++){
if(arr
[i
] == key
){
index
= i
;
System
.out
.println("当前查询的值在数组中的位置为:arr["+i
+"]");
break;
}
}
return index
;
}
public static void init(int arr
[]){
Scanner sc
= new Scanner(System
.in
);
System
.out
.println("请输入数组:");
for(int i
= 0;i
<arr
.length
;i
++){
arr
[i
] = sc
.nextInt();
}
System
.out
.println("赋值结束-------");
}
public static void print(int arr
[]){
System
.out
.print("[");
for(int i
= 0;i
< arr
.length
;i
++){
if(i
== arr
.length
-1){
System
.out
.print(arr
[i
]+"]");
}else{
System
.out
.print(arr
[i
]+", ");
}
}
}
}
4.数组的逆序
class ArrayTest3{
public static void main(String
[] args
){
int[] arr
= {13,87,65,24,57} ;
System
.out
.println("数组逆序前: ") ;
printArray(arr
) ;
System
.out
.println("----------------") ;
System
.out
.println("数组逆序后: ") ;
reverse2(arr
) ;
printArray(arr
) ;
}
public static void reverse2(int[] arr
){
for(int start
= 0 ,end
= arr
.length
-1 ; start
<end
; start
++,end
--){
int temp
= arr
[start
] ;
arr
[start
] = arr
[end
] ;
arr
[end
] = temp
;
}
}
public static void reverse(int[] arr
){
for(int x
= 0 ; x
< arr
.length
/2 ; x
++){
int temp
= arr
[x
] ;
arr
[x
] = arr
[arr
.length
-1-x
] ;
arr
[arr
.length
-1-x
] = temp
;
}
}
public static void printArray(int[] arr
){
System
.out
.print("[") ;
for(int x
= 0 ; x
< arr
.length
; x
++){
if(x
== arr
.length
-1){
System
.out
.println(arr
[x
]+"]") ;
}else{
System
.out
.print(arr
[x
] +", ") ;
}
}
}
}
5.冒泡排序
import java
.util
.Scanner
;
class Test4{
public static void main(String
[] args
){
int arr
[] = new int[5];
init(arr
);
print(arr
);
System
.out
.println("\n\n");
maoPao(arr
);
System
.out
.println("进行冒泡排序--------");
print(arr
);
}
public static void init(int arr
[]){
Scanner sc
= new Scanner(System
.in
);
System
.out
.println("请输入数组:");
for(int i
= 0;i
<arr
.length
;i
++){
arr
[i
] = sc
.nextInt();
}
System
.out
.println("赋值结束-------");
}
public static void print(int arr
[]){
System
.out
.print("[");
for(int i
= 0;i
< arr
.length
;i
++){
if(i
== arr
.length
-1){
System
.out
.print(arr
[i
]+"]");
}else{
System
.out
.print(arr
[i
]+", ");
}
}
}
public static void maoPao(int arr
[]){
for(int i
= 0; i
< arr
.length
;i
++){
for(int j
= 0; j
< arr
.length
-1-i
;j
++){
if(arr
[j
] > arr
[j
+1]){
int temp
= arr
[j
];
arr
[j
] = arr
[j
+1];
arr
[j
+1]= temp
;
}
}
}
}
}
6.选择排序
class Test5{
public static void main(String
[] args
){
int[] arr
= {5,4,2,6,3,7,8,9,5};
System
.out
.println("当前数组为:");
print(arr
);
select(arr
);
System
.out
.println("使用选择排序算法进行排序:------");
print(arr
);
}
public static void select(int arr
[]){
for(int i
= 0; i
< arr
.length
-1;i
++){
int min
= i
;
for(int j
= i
+1;j
<arr
.length
;j
++){
if(arr
[j
]<arr
[min
]){
min
= j
;
}
}
if(min
!= i
){
int temp
= arr
[i
];
arr
[i
] = arr
[min
];
arr
[min
] = temp
;
}
}
}
public static void print(int arr
[]){
System
.out
.print("[");
for(int i
= 0;i
< arr
.length
;i
++){
if(i
== arr
.length
-1){
System
.out
.print(arr
[i
]+"]\n");
}else{
System
.out
.print(arr
[i
]+", ");
}
}
}
}
数组中常见的异常
异常: 后期Throwable:异常的总称
程序出问题了!
严重问题:
error : 内存异常了 (通过一些第三方工具避免了!)
举例: 一些软件通过一些特殊的操作:造成软件崩溃了!
异常:
Exception: 能够通过本身代码来解决问题
编译时期异常:只要不是运行时期的异常都属于编译时期(不解决,编译通过不了)
RuntimeExcetion:运行时期异常
在执行过程中,由于代码结构不严谨,导致的问题!
第一个异常:数组角标越界!
java.lang.ArrayIndexOutOfBoundsException:
出现的原因:访问不存在的角标!就出异常了
解决方案:改动角标值即可!
第二个异常:空指针异常:
java.lang.NullPointerException:
出现的原因:某个对象都为null,还需要使用对象访问内容或者调用其他功能!
解决方案:只需要对某个对象做一个非空判断!(逻辑判断)
二维数组的定义和初始化
二维数组
:
它就是一个包含多个一维数组的数组
!
定义格式
:
数据类型
[] 数组名称
[] ;
数据类型
[][] 数组名称
; (推荐
)
二维数组的初始化
:
a
.静态初始化
:
标准格式
:
数据类型
[][] 数组名称
=
new 数据类型
[][]{{元素
1,元素
2,...},{元素
1,元素
2...},{元素
1,元素
2...}};
简化格式
:
数据类型
[][] 数组名称
= {{元素
1,元素
2,...},{元素
1,元素
2...},{元素
1,元素
2...}}
b
.动态初始化
: 指定数组长度
,系统给数组中元素分配默认值
动态初始化格式
1
数据类型
[][] 数组名称
= new 数据类型
[m
][n
] ;
m
:表示当前二维数组中的一维数组的个数
n
:表示每一个一维数组的长度
int[][] arr
= new int[3][2] ;
int[] arr
[] = new int[3][2] ;
动态初始化格式
2:
数据类型
[][] 数组名称
= new 数据类型
[m
][] ;
数据类型
[] 数组名称
[] = new 数据类型
[m
][] ;
举例
int[] arr
[] = new int[2][] ;
二维数组的应用
1.二维数组的遍历
class Demo6{
public static void main(String
[] args
){
int[][] arr
= {{1,2,3},{4,5,6},{7,8,9}};
System
.out
.println("\n");
System
.out
.print("{");
for(int i
= 0;i
< arr
.length
;i
++){
System
.out
.print("{");
for(int j
= 0;j
< arr
[i
].length
;j
++){
if(j
== arr
[i
].length
-1 & i
== j
){
System
.out
.print(arr
[i
][j
]+"},");
}else if(j
== arr
[i
].length
-1){
System
.out
.print(arr
[i
][j
]+"}");
}else{
System
.out
.print(arr
[i
][j
]+", ");
}
}
if(i
== arr
.length
-1 ){
System
.out
.print("}");
}
}
System
.out
.println("\n");
}
}
2.杨辉三角形
import java
.util
.Scanner
;
class Demo{
public static void main(String
[] args
){
Scanner sc
= new Scanner(System
.in
);
System
.out
.println("type in :");
int n
= sc
.nextInt();
int[][] arr
= new int[n
][n
];
for(int i
= 0;i
<n
;i
++){
arr
[i
][0]=1;
arr
[i
][i
]=1;
}
for(int i
= 2;i
<arr
.length
;i
++){
for(int j
= 1;j
< i
;j
++){
arr
[i
][j
] = arr
[i
-1][j
-1]+arr
[i
-1][j
];
}
}
for(int i
= 0; i
<arr
.length
;i
++){
for(int j
= 0; j
<= i
;j
++){
System
.out
.print(arr
[i
][j
]+" ");
}
System
.out
.println();
}
}
}
参数传递中的一些注意事项
class Demo{
public static void main(String
[] args
){
int a
= 10;
int b
= 20;
System
.out
.println("a:"+a
+",b:"+b
);
change(a
,b
);
System
.out
.println("a:"+a
+",b:"+b
);
int[] arr
= {1,2,3,4,5};
System
.out
.println(arr
[1]);
change(arr
);
System
.out
.println(arr
[1]);
String s
= "hello";
System
.out
.println(s
);
change(s
);
System
.out
.println(s
);
}
public static void change(int a
,int b
){
System
.out
.println("a:"+a
+",b:"+b
);
a
= b
; b
= a
+ b
;
System
.out
.println("a:"+a
+",b:"+b
);
}
public static void change(int[] arr
){
for(int x
=0; x
<arr
.length
; x
++) {
if(arr
[x
]%2==0) {
arr
[x
] *= 2;
}
}
}
public static void change(String s
){
s
+= "world";
}
}