- 在方法声明中,在指定参数类型后加一个省略号(…)一个方法只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
public class Demo_6 { public static void main(String[] args) { //可变参数 Demo_6 demo_6 = new Demo_6(); demo_6.test(1,2,3,4,5,6,7); } public void test(int x,int y,int... i){ //可变参数 必须在 普通参数 后面 for (int i1 = 0; i1 < i.length; i1++) { System.out.print(""+i[i1]+"t"); } } }递归 求阶乘
package Recursion; import java.util.Scanner; public class Demo_2 { //阶乘 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int x = scanner.nextInt(); System.out.println(Factorial1(x)); } public static int Factorial1(int x){ if(x < 0){System.out.println("参数错误") return -1;} if(x == 0)return 1; else{return x * Factorial1(x - 1);} } }
或者用三目运算符偷懒。。。。。
public static int Factorial2(int x){ return x == 1 ? 1 : x * Factorial2(x - 1); }
嗷对了,阶乘的英文是 factorial (adj.阶乘的)
由于Java是栈机制,递归的消耗会很大,尽量别用
计算器作业import java.util.Scanner; public class Homework { //计算器 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); do{ System.out.print("请输入第一个数字:"); double a = scanner.nextDouble(); System.out.print("请输入第二个数字:"); double b = scanner.nextDouble(); System.out.print("请输入要进行的运算:"); String c = scanner.next(); switch(c){ case "+":System.out.println(""+a+" "+c+" "+b+" ="+" "+(a+b));break; case "-":System.out.println(""+a+" "+c+" "+b+" ="+" "+(a-b));break; case "*":System.out.println(""+a+" "+c+" "+b+" ="+" "+(a*b));break; case "/":System.out.println(""+a+" "+c+" "+b+" ="+" "+((double)a/b));break; case "%":System.out.println(""+a+" "+c+" "+b+" ="+" "+(a%b));break; default: System.out.println("输入不合理!");break; } System.out.println("请问是否要继续(Y/N):"); String c1 = scanner.next(); if(c1.equals("Y"))continue; else break; }while(true); scanner.close(); } }
比较两个字符串是否相同:
String a = "aaa"; String b = "bbb"; a.equals(b); //返回false
有一点十分难受:
System.out.println("请问是否要继续(Y/N):"); String c1 = scanner.next(); System.out.print(c1 == "Y"); System.out.println(c1.equals("Y"));
上面false,下面true
可能的解释:
1、由于c1和"Y"地址不同,采用上面的比较法,输出肯定是false
2、通常采用equals进行比较,equals运用了Java的重载。
数组 数组的声明和创建next() 和 nextLine() 的区别
hasNext() 和 hasNextLine() 的区别
判断字符串是否相等
Java字符串方法大全(超超超详细)
package Praparation; public class Demo_1 { public static void main(String[] args) { //数组的定义 int[] a = {1,2,3,4,5,6,7}; char[] b = {'a','b','c','d','e'}; //数组的声明,没有分配空间 char[] c1; char c2[];//不建议 //数组的创建,分配空间了 c1 = new char[5]; //数组的赋值 c1[0] = 'a'; c1[1] = 'b'; c1[2] = 'c'; c1[3] = 'd'; c1[4] = 'e'; int[] num = new int[10]; for (int i = 0; i < c1.length; i++) { System.out.print(c1[i]+"t"); } } }三种初始化及内存分析 内存分析
图源B站狂神
图源B站狂神
- 声明数组时,将变量类型放在栈中创建数组时,在堆中开辟了数组的空间并准备储存数据赋值数组时,在堆中给每一个位置赋值
package Praparation; public class Initialization { public static void main(String[] args) { //静态初始化 int[] a = {1,2,3};//创建+赋值 Man[] men = {new Man(),new Man()};//引用类型 //动态初始化,后期赋值,包含默认初始化 int[] b = new int[10]; b[0] = 10; //默认初始化 } }
默认初始化值:
- 整数类型(byte、short、int、long)的基本类型变量的默认值为0。单精度浮点型(float)的基本类型变量的默认值为0.0f。双精度浮点型(double)的基本类型变量的默认值为0.0d。字符型(char)的基本类型变量的默认为 “/u0000”。布尔性的基本类型变量的默认值为 false.引用类型的变量是默认值为 null。数组引用类型的变量的默认值为 null。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)