- eclipse中的快捷键
https://blog.youkuaiyun.com/chengly0129/article/details/49248881 - Switch用法
switch语句,case后值相对应,则输出每个后面的syso;如果输入的不是case后的值,则需要一个default,吧所有不符合的值输出一个syso。
. do-while语句和while的区别
- do-while语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件。其实就是,代码在刚开始执行的时候,都是要先走一遍do循环体内的代码,然后在与while里面的条件进行判断,成立循环就一直继续下去,不成立就跳出循环。循环体内代码至少被执行一次。(肚子饿了,看到吃的先狂吃一顿,直到被发现了,就闭嘴停不吃了)
- while语句是属于前测试循环语句,也就是说,在循环体内的代码被执行之前,就会对出口条件求值。其实就是先与while里面的条件进行判断,成立就走循环体内的代码,不成立就不走循环体内代码。循环体内的代码有可能永远不会执行。(肚子饿了,先问一下能不能吃东西,同意了就狂吃,直到不允许吃为止,不同意,就忍着忍着忍着不吃走了…)
**-
- break和continue区别https://zhidao.baidu.com/question/136303942.html
**
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版本以上