黑马程序员————java基础--------方法与一维数组

来源:互联网 发布:西澳大学知乎 编辑:程序博客网 时间:2024/05/29 04:48

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、方法:

也就是c语言中的函数。指能够完成特定功能的代码块。但是在java面向对象语言中,方法只是类中的一个成员,而类才是面向对象语言的基本单位,就像组成社会的最基本单位是家庭一样,类就像是家庭,而方法在java中只是家庭中的一个成员。但是在面向结构语言当中,函数则是基本的单位。



方法的格式为:修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...){

方法体;

return 返回值;

   }

像我们第一天在HelloWorld程序中的主方法,就是方法的一个典型代表。public static void main(String [] args){}这里面的public就是权限修饰符,static是静态修饰符,表示java虚拟机不用创建对象,就可以用类名直接调用该方法,void是返回值类型,表示没有的意思,因此return可以省略不写。main是该方法的名字,String [] args则是参数列表。因为在Scanner之前,键盘录入,都是通过String [] args来完成的。


1、在有主函数的类中,建立方法,必须是静态的。因为主函数是静态的,为了能够让静态方法访问静态方法,因此其他函数也必须是静态的。但是在别的类中,则没有这样的要求。比如
class Demo{public static void main(String [] args){String s="我实在是太喜欢黑马了";show(s);}public static void show(String s){System.out.println(s);}}

这是最典型的在主函数中调用方法了。如果show()中没有static的话,编译期间就会报错。方法调用一般有三种:上面的例子就是其中的一种:单独调用。因为show()是个没有返回值的方法。所以要采用这种调用。再比如:
class Demo{public static void main(String [] args){int d=sum(2,3);//赋值调用System.out.println(d);System.out.println(sum(2,3));//输出调用}public static int sum(int a,int b){int c=a+b;return c;}}

如果方法时有返回值的,那么单独调用就不适合了,而需要赋值调用,或者输出调用。

方法的注意事项:
A:方法不调用不执行
B:方法之间是平级关系,不能嵌套定义
C:方法定义的时候,参数是用,隔开的
D:方法在调用的时候,不用在传递数据类型
E:如果方法有明确的返回值类型,就必须有return语句返回。


方法重载:方法重载是指在同一个类中,方法名相同,参数列表不同。与返回值无关。参数列表是指参数的个数,以及参数对应的数据类型不同。
class Demo{public static void main(String [] args){String s="我要考黑马";int a=5;//方法重载show(a,s);int b=5;//方法重载show(a,b);}public static void show( int n,String s){for(int x=0;x<5;x++){for(int y=0;y<n;y++){System.out.print(s+" ");}System.out.println();}}public static void show(int a,int b){System.out.println(a+","+b);}}


上面的这个例子就是方法重载,其中在Demo类中有两个show()方法,但是这两个show方法的参数类型不同,因此show(a,s)调用show方法时就会主动匹配show(int n,String s)。而当show(a,b)就可以主动匹配show(int a,int b).


二、数组:

数组是存储同一种数据的多个元素的容器。数组既可以存储基本数据类型,也可以存储引用数据类型。但是数组的长度是固定的,就是当你在堆内存中new一个对象的时候,数组的长度就已经是固定的了。但是后面学到的集合长度就是可变的。但是集合只能存储引用数据类型。


数组的特点是每个元素都有一个index索引,我们可以通过索引快速追踪里面的每个元素,其中规定第一个元素索引是0.最大的索引是arr.length-1;我们在定义数组时有两种格式:
数据类型[] 数组名;

数据类型 数组名[];


数组的初始化也有两种:
A:静态初始化:int [] arr=new int []{1,2,3,4,5};
String [] s=new String []{"我","爱","黑","马"};
String [] s1={"我","真","的","爱","黑","马"};
B:动态初始化:int [] arr=new int [3];


一般情况下我们都会选择静态初始化的第三种。其实数组在new的时候,是建立在堆内存中的,如果数组类型不同,每个元素的默认值就不同:
byte,short,int,long 默认值为0
float,double 默认值为0.0
char默认值为 '\u0000'
boolean 默认值为false

引用类型默认值为 null


下面就是数组的一些常见操作:


A:遍历:这里用简单的for循环,其实后来还有for增强也可以用。
方式1:
public static void printArray(int[] arr) {for(int x=0; x<arr.length; x++) {System.out.println(arr[x]);}}

方式2:
public static void printArray(int[] arr) {System.out.print("[");for(int x=0; x<arr.length; x++) {<span style="white-space:pre"></span>if(x == arr.length-1) {<span style="white-space:pre"></span>System.out.println(arr[x]+"]");<span style="white-space:pre"></span>}else {<span style="white-space:pre"></span>System.out.println(arr[x]+", ");<span style="white-space:pre"></span>}<span style="white-space:pre"></span>}}

B:最值:如果学了Arrays类中的API之后,就可以通过sort()方法,给数组排序,然后最后一个元素就是最大的。第一个就是最小的。
最大值:
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;}


最小值:
public static int getMin(int[] arr) {int min = arr[0];for(int x=1; x<arr.length; x++) {<span style="white-space:pre"></span>if(arr[x] < min) {<span style="white-space:pre"></span>min = arr[x];<span style="white-space:pre"></span>}}return min;}


 C:逆序
方式1:
public static int 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;}}

方式2:
public static int reverse(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;}}

D:查表
public static String getString(String[] strArray,int index) {return strArray[index];}

E:基本查找
方式1:
public static int getIndex(int[] arr,int value) {for(int x=0; x<arr.length; x++) {if(arr[x] == value) {return x;}}//因为查找会出现没有元素的情况,此时就返回一个没有对应的-1索引。return -1;}

方式2:
public static int getIndex(int[] arr,int value) {int index = -1;<span style="white-space:pre"></span>for(int x=0; x<arr.length; x++) {<span style="white-space:pre"></span>if(arr[x] == value) {<span style="white-space:pre"></span>index = x;<span style="white-space:pre"></span>break;<span style="white-space:pre"></span>}}return index;}

F:排序:排序的方法比较多,这里就简单介绍一个冒泡排序

public staitc void bubbleorder(int [] arr){for(int x=0;x<arr.length-1;x++){for(int y=0;y<arr.length-1-x;y++){if(arr[y]>arr[y+1]){int temp=arr[y];arr[y]=arr[y+1];arr[y+1]=temp;}}}}

0 0
原创粉丝点击