JAVA学习笔记第一讲091031

来源:互联网 发布:线切割绘图编程实例 编辑:程序博客网 时间:2024/05/19 14:37

数据类型:


(4类8种)

逻辑型-boolean
字符型- char
数值型:
整数型- byte,  short,  int,  long
浮点数型- float,  double


·Java 语言中还允许使用转义字符 ‘/’ 来将其后的字符转变为其它的含义.‘/n’代表换行符
·Java整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ ,如:int i1 = 600; //正确     long l1 = 8888888888L; //必须加L否则会出错
·Java 浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f 或 F ,如:double d = 12345.6; //正确   float f = 12.3f; //必须加f否则会出错

----------------------------------------------------------------------------------------------------------------------------------------------


运算符:


逻辑运算符: !(非), &&(短路与),||(短路或),^ (异或,两者不同返回真),& , |
算术运算符:  +,-,*,/,%(取余),++,--

 

·自加自减(++,--)在前时先运算再取值,在后时先取值再运算。
       eg:
        int i1 = 10, i2 = 20;
        int i = i2++; //i先等于i2(20),然后i2自加
        System.out.print("i=" + i);//20
        System.out.println(" i2=" + i2);//21
        i = ++i2;
        System.out.print("i=" + i);//22
        System.out.println(" i2=" + i2);//22
        i = --i1;
        System.out.print("i=" + i);//9
        System.out.println(" i1=" + i1);//9
        i = i1--;
        System.out.print("i=" + i);//9
        System.out.println(" i1=" + i1);//8

----------------------------------------------------------------------------------------------------------------------------------------------

三目条件运算符
  x ? y : z
  eg:
                int score = 80; int x = -100;
                String type = score < 60 ? "不及格" : "及格";
                int flag = x > 0 ? 1 : (x == 0 ? 0 : -1);
                System.out.println("type= " + type);//及格
                System.out.println("flag= "+ flag);//-1

----------------------------------------------------------------------------------------------------------------------------------------------

 

break & Continue 语句

 

----------------------------------------------------------------------------------------------------------------------------------------------

递归调用 recursion recursive


递归调用指在方法执行过程中出现该方法本身的调用。


例如:求Fibonacci数列: 1, 1, 2, 3, 5, 8, …第40个数的值。 数列满足递推公式:
             F1 = 1, F2 = 1             Fn = Fn – 1  +  Fn – 2  ( n > 2 )

 

 public static void main(String arg[]) {
  System.out.println(f(5));
 }


 public static int f(int n) { 
  if (n == 1 || n == 2) { 
     return 1;      //递归需要一个中止
  } else {  
     return f(n - 1) + f(n - 2);  //法则公式
   }
     }
 }

 

 

````````````````````````````汉诺塔````````````````````````````````````````````````````````

 

汉诺塔1:移动盘子共需多少步。
public static void main(String args[]){       
          Scanner s = new  Scanner(System.in);
          int count = Integer.parseInt(s.next()); 
          System.out.println( "移动"+count+"个盘子需要" +rec(count));
  }
 

static long rec(int n){
  if(n == 1 ){
  return 1;
  }
                return 2*rec(n-1)+1;
  }

 

 

汉诺塔2:
1.以C盘为临时杆,从A杆将1 至N-1 号盘移至B 杆。
2.将A杆中剩下的第N 号盘移至C杆。
3.以A杆为临时杆,从B杆将1 至N-1 号盘移至C 杆。

 

public class Test{
  public static void main(String args[]){
  Test t = new Test();
  t.hanoi(3,'A','B','C');
 }


 public void hanoi(int num,char a,char b,char c){
  if(num == 0) return;
  this.hanoi(num-1,a,c,b);
  System.out.println("move plate p" + num + " from " + a + " to " + c);
  this.hanoi(num-1,b,a,c);  
 }
}