Java基础入门

switch语句,case后值相对应,则输出每个后面的syso;如果输入的不是case后的值,则需要一个default,吧所有不符合的值输出一个syso。

. do-while语句和while的区别

  • do-while语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。其实就是,代码在刚开始执行的时候,都是要先走一遍do循环体内的代码,然后在与while里面的条件进行判断,成立循环就一直继续下去,不成立就跳出循环。循环体内代码至少被执行一次。(肚子饿了,看到吃的先狂吃一顿,直到被发现了,就闭嘴停不吃了)
  • while语句是属于前测试循环语句,也就是说,在循环体内的代码被执行之前,就会对出口条件求值。其实就是先与while里面的条件进行判断,成立就走循环体内的代码,不成立就不走循环体内代码。循环体内的代码有可能永远不会执行。(肚子饿了,先问一下能不能吃东西,同意了就狂吃,直到不允许吃为止,不同意,就忍着忍着忍着不吃走了…)

**-

**

break直接跳出循环,所在的循环直接结束。
continue是在本次迭代中(本次循环中)结束本次迭代,并返回到判断语句,继续执行循环。
**

**
函数是具备特定功能的一段代码块,解决了重复性代码的问题。
目的是为了提高程序的复用性和可读性。
函数的参数传递
(1).形式参数:函数定义时的参数为形式参数------>简称形参
(2).实际参数:函数调用时的参数为实际参数 ------>简称实参
参数传递:只能有实参传给形参
注意:实参和形参在个数、顺序、类型上都要保持一致.
**

  • 一个数开平方:

**
Math.sqrt(2.0); //对2开平方
Math.pow(9.0, 1.0/3.0); //对9开三次方,开其他次方依次类推

sqrt函数原型:
public static double sqrt(double a)
作用是返回正确舍入的double值的正平方根。
参数a的各种取值得到的结果:
1、如果参数是 NaN 或小于零,那么结果是 NaN。
2、如果参数是正无穷大,那么结果就是正无穷大。
3、如果参数是正零或负零,那么结果与参数相同。
否则,结果是最接近该参数值的真实数学平方根的 double 值。

pow函数原型
public static double pow(double a, double b)
作用是返回a的b次幂,详情请参考java api

  • for循环 可以命名

outer:for(定义变量;布尔表达式;变量递变){
inner:for(定义变量;布尔表达式;变量递变){
循环语句;
}
} //这里就给外边的for循环命名为outer,内部的命名为inner

这样的好处就是break时,可以通过名称执行哪个for循环的终止跳出。

  • 哥德巴赫猜想(利用函数):

任何一个大于6的偶数都能被分解为两个质数的和,要求随 机输入一个大于6的偶数,打印它能被分解为哪两个质数的 和。
例如:8 = 3+5 、 12 = 7+5 、 18 = 11+7

public static void main(String[] args) {
		int a=opp();
		obb(a);
	}	
		public static int opp(){
			//输入数字并通过检验确定一个符合要求的数
			Scanner sc=new Scanner(System.in);
			System.out.println("请输入大于6的偶数:");
			int num=sc.nextInt();
			if(num%2!=0||num<=6){
				System.out.println("输入错误,请重新输入大于6的偶数:");
				return opp();//错误则返回inPut()继续输入
			}
			return num;//正确则返回num值
		}

	
	public static boolean zhi(int a){
		for(int i=2;i<=Math.sqrt((double)a);i++){
			if(a%i==0){		//判断是否是质数
				return false;
			}
		}
		return true;
	}
	
	public static void obb(int a){
		for(int i = 2;i<a/2;i++){
			if(zhi(i)==true&&zhi(a-i)==true){
				System.out.println(i+"+"+(a-i));
			}
		}
	}

数组

数组的遍历

  • 数组扩容

不利用函数:

public static void main(String[] args) {
		int[] a={1,2,3,4};		//定义一个数组a(这是已知数组)
		int[] b=new int[8];		//定义一个新数组b,并给定长度(这是扩容的长度)
		
		for(int i=0;i<a.length;i++){
			b[i]=a[i];		//将a[i]的值赋予b[i],即将a数组各个位置上的值加到b数组中
		}
		a=b;				//将b数组赋给a数组,也就是将扩容后的数组,再次给到a数组(原先的数组)中。
							//其实这就是添加一个新数组,将原先数组值赋给新数组,再抛弃旧数组,将新数组给到原先数组。
		for(int j=0;j<a.length;j++){
			System.out.println(a[j]);	//遍历数组
		}
	}

利用函数:
第一种方法:

public static void main(String[] args) {
		int[] a={1,2,3,4};
		a=expand1(a);
		for(int j=0;j<a.length;j++){
			System.out.println(a[j]);	//遍历数组
		}
	}
	public static int[] expand1(int[]a){	//定义一个返回值是数组的函数
		int[] b=new int[a.length*2];	//定义一个数组b长度为a的两倍
		for(int i=0;i<a.length;i++){
			b[i]=a[i];
		}
		return b;		//这里返回的是b
	}

第二种方法:

public static void main(String[] args) {
		int[] a={1,2,3,4};
		a=expand2(a);
	}
	public static int[] expand2(int[]a){
		int[] b=new int[a.length*2];
		System.arraycopy(a, 0, b, 0, a.length);		//调用一个系统函数,作用是将a数组从第0位开始复制到b数组第0位,
													//一共复制a.length位
		return b;
	}

第三种方法:

	public static void main(String[] args) {
		int[] a={1,2,3,4};
		a=expand3(a);
	}
	public static int[] expand3(int[]a){
		return java.util.Arrays.copyOf(a, a.length*2);
		//利用Array.copyOf 直接返回一个长度为a数组两倍的新数组
	}

ps:第二和第三种方法需要注意jdk要在1.5版本以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值