方法
public static void main(String[] args) {
/* int a=1;实际参数
int b=2;
int sum=add(a,b);*/
int sum = add(1, 2);//快捷方式
System.out.println(sum);
}
//加法 在方法类中调用 所以加了static
public static int add(int a,int b){//a,b形式参数
return a+b;
}
什么是值传递 什么是引用传递?
引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法是传入的变量的值也将改变.
值类型表示复制一个当前变量传给方法,当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变.
传值:传递的是值的副本。方法中对副本的修改,不会影响到调用方。
传引用:传递的是引用的副本,共用一个内存,会影响到调用方。此时,形参和实参指向同一个内存地址。对引用副本本身(对象地址)的修改,如设置为null,重新指向其他对象,不会影响到调用方。
方法的重载
规则:
- 方法名必须相同。
- 参数列表必须不相同(个数不同,或类型不同,或参数排列顺序不同)。
- 方法的返回值可以相同可以不相同。
- 仅仅返回值不同不能是方法的重载。
public static void main(String[] args) {
int max1 = max(11, 22);
double max2 = max(11.2, 21.3);
System.out.println(max1);
System.out.println(max2);
}
public static int max(int a,int b){
int result=0;
if(a>b){
result=a;
}
else {result=b;}
return result;
}
public static double max(double num1,double num2){
double result=0;
if(num1>num2){
result=num1;
}
else {result=num2;}
return result;
}
命令行传递参数
结合之前的右键项目–>点击show in Explorer ->打开文件夹后输入 cmd 在命令提示符中javc 文件名.java编译下 然后cd… 退回scr路径 然后再java 包名.类名+后面的操作 就ok了
问题 :
原因应该是编译后找不到class类文件的路径
解决方法:我的解决方法就是在环境变量的时候在classpath路径上加入".;"
方法转载于:https://www.cnblogs.com/liuhappy/p/10102800.html
可变参数
public static void main(String[] args) {
Demo05 demo05=new Demo05();
demo05.test(1,2,3,4,5);
}
//可变参数 可以有任意多个同类型的形参,并且实参也要同类型,但必须放到最后一个
//public void test(int ...i,double a)这个是不可以的
public void test(int ...i){
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
System.out.println(i[3]);
System.out.println(i[4]);
}
递归函数
//递归求阶乘
public static int fun(int n){
if (n==1){return 1;}//终止条件
else{
return fun(n-1)*n;//缩小问题规模
}
}
1、明确递归终止条件;
2、给出递归终止时的处理办法;
3、提取重复的逻辑,缩小问题规模。
数组
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int[]nums;//1 定义
nums= new int[10];//创建一个数组
int sum=0;
//给数组赋值
for (int i = 0; i < nums.length; i++) {
nums[i]=scanner.nextInt();
}
System.out.println();
//求数组的和
for (int k = 0; k < nums.length; k++) {
sum+=nums[k];
}
System.out.println("总和为"+sum);
//遍历数组
for (int j = 0; j < nums.length; j++) {
//System.out.print(nums[j]+'\t');
System.out.println(nums[j]+"\t");
}
}
'\t'与"\t"的区别:
'\t':1.如果'\t'前所连接内容长度不是8的整数倍,那么'\t'会添加相应的空格数使总长度达到最近的8的整数倍
2.如果'\t'前所连接内容长度为8的整数倍,那么'\t'会添加8个空格
"\t":制表符,使打印的数据更工整,对齐。
java报错信息:java.langArrayIndexOutOfBoundsException (数组越界)
数组的三种初始化
public static void main(String[] args) {
//静态初始化:创建+赋值
int []num={1,2,3,4,5};
//引用类型
Demo01[] demo={new Demo01(),new Demo01()};
//动态初始化
int []num1=new int[10];
}
数组是引用类型,它的元素相当于类的实例化数据,因此数组一经分配空间,其中每个元素也会被按照实例变量的方式分配隐式初始化
数组的四个基本特点
- 长度确定,数组一旦创建,大小是不可以改变的。
- 元素的类型必须相同,不允许程序混合类型。
- 数组的元素可以为任何数据类型,包括基本类型和引用类型
- 数组变量属于引用类型,可以把数组看成对象,数组的每个元素相当于该对象的成员变量,数组本身就是对象,java中的对象是在堆中的,因此数组无论保存原始类型还是其它对象类型,数组对象本身是在堆中的。