Java基础之方法的重载 数组定义遍历内存分析
2019-03-31 23:02
447 查看
- 方法重载:overloading method
- 在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义;
- 返回值 不能 作为重载的条件。 如果两个函数名字相同 参数相同 仅返回值不同 则不能同时定义
如:
public void method(int a){…}
public void method(char c){…}
/** 方法(函数) 方法的重载:在同一个类中,方法名相同,参数列表不同,返回值不能作为重载的条件。 */ import java.util.Scanner; public class Test5{ public static void main(String[] args){ int result = add(10,20); System.out.println(result); } public static int add(int a,int b){ return a+b; } public static float add(float a,float b){ return a+b; } public static float add(int a,float b){ return a+b; } }
四种:
一、使用默认的初始值来初始化数组中的每一个元素加粗样式
语法:数组元素类型 [] 数组名 = new 数组元素类型[数组中元素的个数(数组的长度)];
如:int [] scores = new int[3];
二、先声明,然后再赋予默认的初始值。
语法:数组元素类型 [] 数组名;
数组名= new 数组元素类型[数组中元素的个数(数组的长度)];
如:int [] scores;
scores = new int[3];
三、先声明,然后再使用指定的值进行初始化。
语法:数组元素类型 [] 数组名 = new 数组元素类型[]{元素1,元素2,…};
如:int [] scores = new int[]{56,78,98};
四、将第三种写法可以简化为(使用数组常量值给数组进行赋值)
语法:数组元素类型 [] 数组名 = {元素1,元素2,…};
如:int [] scores = {56,78,98};****
数组的遍历
1.5以后Java新增foreach循环和可变参数。
for(int x:scores){ System.out.println(x); }
遍历方式二:使用增强for循环【foreach循环】
语法:for(数组中元素的类型 变量:数组名){
数组中元素的类型 临时变量 = 变量;
}
结合方法的定义,可以用可变参数来代替数组作为参数。
public static void print(int … 变量名){
//可变参数在使用时作为数组使用。
}
/** 数组的遍历 */ import java.util.Scanner; public class Test7{ public static void main(String[] args){ int[] scores = {59,75,83,93,100}; System.out.println("数组的长度:"+scores.length); //for遍历 int len = scores.length;/*这里不直接使用for(int i=0;i<scores.length;;i++) 降低效率 每次都要计算数组长度*/ for(int i=0;i<len;i++){ /*要int len = scores.length;将其定义出来 这样每次访问的是常量 效率提高*/ int score = scores[i]; System.out.println(score); } System.out.println(scores); System.out.println("-----------------"); //forearch JDK1.5之后新增的特性 //======================================= for(int x:scores){ System.out.println(x); }System.out.println("--------------"); //调用方法 //print(scores); //print2(59,75,83,93,100); 这样就是任意多个数都可以放到print2输出 所以是可变的 没有规定个数 //print3(null); print4(scores); //new关键字表示创建一个数组, int[] nums = new int[]{1,2,3,4,5}; } public static void print(int[] x){ int len = x.length; for(int i=0;i<len;i++){ System.out.println(x[i]); } } //JDK1.5可变参数 //可变参数只能是参数列表中的最后一个 就是不能放前边print2(int... x, int k)这样不会得到k 都放到第一个参数里了,x里面了 //可变参数作为数组使用 public static void print2(int k,int... x){ int len = x.length; for(int i=0;i<len;i++){ System.out.println(x[i]); } } //测试数组的异常NullPointerException(空指针) public static void print3(int[] x){ // java.lang.NullPointerException //当一个变量为null(没有赋值时)时,我们去调用了该变量的属性和方法 System.out.println("数组的长度为:"+x.length); } //测试数组的异常,数组下标越界 // java.lang.ArrayIndexOutOfBoundsException public static void print4(int[] x){ for(int i=0;i<=x.length;i++){ System.out.println(x[i]); } } }
//测试数组的异常NullPointerException(空指针)
print3(null);
当一个变量为null(没有赋值时)时,我们去调用了该变量的属性和方法 就会发生空指针异常
测试数组的异常,数组下标越界
java.lang.ArrayIndexOutOfBoundsException
内存分析
数组内存结构分析:数组是引用类型,会存放在堆内存中。
Random r = new Random();//创建一个可以生成随机数的工具
r.nextInt(50);/获取50以内的整型随机数/
/** 数组示例:1、猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数。 */ import java.util.Scanner; import java.util.Random; //生成伪随机数 public class Test8{ public static void main(String[] args){ int[] nums = new int[5]; int len = nums.length; Random r = new Random();//创建一个可以生成随机数的工具 for(int i=0;i<len;i++){ nums[i] = r.nextInt(50);/*获取50以内的整型随机数*/ } Scanner input = new Scanner(System.in); System.out.println("请输入你要猜的数:(50以内)"); int userNum = input.nextInt(); boolean flag = false; for(int x:nums){ if(userNum==x){ flag = true; break; } } if(flag){ System.out.println("恭喜你,猜对了"); }else{ System.out.println("没猜对,加油!"); } } }
/** 二维数组示例:JAVA中没有真正的多维数组,多维数组的表示方式是数组中的元素还是数组。 一起来参加屌丝程序员大赛吧,有3个班级各3名学员参赛, 记录每个学员的成绩,并计算每个班的平均分。 */ import java.util.Scanner; public class Test10{ public static void main(String[] args){ int[][] scores = {{78,98,88},{87,96,85},{67,78,89}}; int classLen = scores.length; for(int i=0;i<classLen;i++){ int sum = 0; int count = scores[i].length; for(int j=0;j<count;j++){ sum+=scores[i][j]; } int avg = sum/count; System.out.println("第"+(i+1)+"班的平均成绩是:"+avg); } } } /* 78 98 88 87 96 85 67 78 89 */
相关文章推荐
- JAVA基础再回首(三)——方法、重载、数组、堆栈内存分配、数组遍历、获取最值、二维数组
- Java基础 - 数组,内存,数组遍历、取最值等操作
- java学习笔记:Java语法基础2(循环,函数,重载,数组,方法)
- JAVA基础——初识JAVA(六)(数组,数组遍历,数组排序,数组常用方法、二维数组)
- java语言-基础(方法重载的定义)
- 函数的重载与覆盖的区别+数组定义方式+java内存的划
- [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组
- Java基础——方法的重载和重写的区别与分析
- Java语言基础-数组的动态初始化和内存分析
- 第八、Java的数组定义与内存分析
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- 黑马程序员——java基础(面向对象)进制转换、数组、内存分析
- Java语言基础-数组的静态初始化和内存分析
- (2011年java基础)java内存分析(2)----方法区和常量池
- 第八讲 数组的定义与四种赋值方式、遍历和内存分析
- 黑马程序员—java基础—java基础语法:数组,二维数组,方法重载
- Java笔记1 Java编程基础<2>循环语句、函数(重载)、变量和数组的内存结构
- 数组内存图分析--Java基础028
- JAVA基础初探(二)数组、Arrays类、foreach、方法、重载
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用