您的位置:首页 > 其它

学习日志————day2————此文件为倒序

2016-06-04 15:51 246 查看
                      Java第二天      2015年4月24日

        关键字:数据类型 流程控制

              

1、Java的数据类型

  (1)简单类型(基本数据类型,基类) --- 8种有符号的数据类型

       a) 整型 

          byte       1字节 8位       -128到127  0000 0000

          short      2字节 16位      -2^15到2^15-1  -32768 到 32767

          int        4字节 32位      -2^31到2^31-1  -2147483648 到 2147483647    整型值存放,正数存放原码(二进制码),负数则存放补码(原码按位取反末位加一)。

          long       8字节 64位      -2^63到2^63-1  long a = 40000l;  //在数字的结尾加“l”,表示long类型的字面值

       b) 浮点类型 

          float      4字节 32位       float a = 1.3f;

          double     8字节 64位       double a = 1.3d;

          double和long比较,double 表示的数值要大,因为有科学计数法

          float a = 1.3;  //error 会造成精度丢失,强转float a = (float)1.3;或者float a = 1.3f;

       c) 字符类型 

          char       2字节 16位 

       d) 布尔型 

          boolean    false/true    //Java中false与0不能转换

          

       自动类型提升(向上转换):

            a 运算符 b  =(int)c

         a和b中有一个是double ,  结果就是double      

         a和b中有一个是float ,  结果就是float

         a和b中有一个是long ,  结果就是long

         除以上之外的情况,结果都是int  

         

       char是无符号的16位整数,字面值必须用单引号括起来; ‘a’

       String 是类,一个String的字符串是一个对象,非原始数据类型;

       在字符串中使用"+",表示字符串的连接,系统重载了这个运算符

       char类型也可以 用通用转译字符,但是不能用ASCII码。可以用“\u0000”(十六进制)这种格式,因为char型中使用的是unicode编码方式。 

       char c1 = 'a';

       char c2 = 97;

       char c3 ='\u0061';  //一个字节用2个十六进制的数字表示

       

       整数除0有异常,double除0没有异常

       

  (2)对象类型        

  

2、java中的运算符(java的运算符的优先级和结合性和c++相同)

int x=8;double y=9.0; 

(x>(int)y)?9:1

   *** System.out.println(3/2)  按整型计算 得1 ***

   

   byte a = 1;

   a=a+2;    //不合法,自动类型提升,赋值丢失精度

   a += 2 ;  //不会发生自动类型提升的,合法

   a++ ;     //不会发生自动类型提升的 

   int b=1;b++ = 1(表达式的值);b=2(变量的值)

++b  , b++==>变量的值 b,表达式的值b++/++b

   2(0000 0010)0000 0001

   1) >>=  前面是零补零,前面是一补一;   右移一位比除以2效率高

   2) >>>=  无符号右移(强制右移都会移进零),
   >>=和>>>=对于负数不一样

      正数:右移n位等于除以2的n次方

      负数:变成正数。

   3) &&   短路与,前面为假,表达式为假,后面的操作不会进行,& 非短路运算符,会对所有条件进行判断。

0&&1=0 1&&0=0 0&&0=0 1&&1=1

   例:  int a = 4;

         if(a<3&(b=a)==0)   b赋值

         if(a<3&&(b=a)==0)  b不赋值  

   4) ||   短路或,前面为真,表达式为真,后面的操作不会进行,| 会对所有条件进行判断。

0||1=1 1||0=1 0||0=0 1||1=1

   5)instanceof,是用于判断一个对象是否属于某个类型 b==a 
pc机instanceof计算机=true
工控机instanceof计算机=true
手机instanceof计算机=false

   6)java中的求余运算符“%”可以对两个实型变量求余 5%2=1

   

3、流程控制

(1)控制流

    if()

    if()….else

    if()…..else if()….else

    注意:else只是和其上面的同层的最近的if()来配对。

(2)switch(x){//x只能是byte,short,char,int四种类型

         case  'a' : ……..

         case  1 : ……break;

         default :

         …………

     }

    注意:switch()内数据类型为byte short char int类型,只有以上四种类型的才可以在switch()中使用。

          case块中不加break时顺序执行下面的语句。   

          

4、循环语句

   int k=1;n=3;

   for(int i=0;i<n;i++){
k=k+1;//2,3,4

 }  ---- 确定循环

   while(){}               ---- 循环0或多次

   do{} while();-----------注意加分号   循环1或多次       

   

5、语法   

  在main方法中要使用全局变量或调用其他方法时,要求全局变量和方法要有static修饰

  命令行参数  java Class a b  

  args[0] = a 

  args[1] = b

  字符串转成int类型  int i = Integer.parseInt(a);  

  

6、数组

  内存中的连续空间

  数组是一次性定义多个相同类型的变量  //数组是集合

  Java中一个数组就是一个对象,有属性,没有方法

  

  int[9] a; //定义一个数组,变量名就是指向数组首地址的指针

  a=new int[10]; //为数组分配空间

  a.length;  //得到数组的长度      

  数组创建后有初始值:数字类型为0   布尔类型为false  引用类型为null

  String[] 默认值 null

  

  初始化、创建、和声明在同一时间 

      int[] i = {0,1};   //显示初始化

      int[] i = new int[]{0,1};  //注意:这样显示的初始化的时候,new int[] 中括号中必须是空的,不能填数字

      Car[] c = {new Car(),new Car()}; 

  数组拷贝

  System.arrayCopy(Object src, int srcPos, Object dest, int destPos, int length);

  src源数组,srcPos从第几位开始拷贝(数组下标,从0开始),dest目标数组,destPos目标数组放置的起始位置,length,表示要拷贝的长度。拷贝一个数组到另一个数组。

  

  多维数组 

   1) 有效定义

      int[][] i1 = new int[2][3]; (同时给定一维,二维的空间)

      int[][] i2 = new int[2][]; (给定一维的空间,二维空间待定,不规则的二维数组)

      i2[0] = new int[2],i2[1] = new int[3]; 
   * C++中 int[][] =new int[][3];有效

   2) 无效定义

      int[][] i1 = new int[][3]; 

   3) 数组长度 ------------数组的属性length(在二维数组中这个属性只代表第一维的长度)

      int[] i = new int[5]; 

      int len = i.length;  //len = 5;

       

      Student[][] st = new Student[4][6]; 

      len = st.length;      //len = 4; 

      len = st[0].length;   //len = 6;

      

练习:(1)数组元素的偏移

             在使用数组的时候,通常使用一个辅助变量纪录数组中的有效元素的个数,还表示下一个可插入位置的下标

      (2)数组元素的轮换 

           偶数个球队足球比赛,每个队和每个队有且只有一场比赛 

           把数字按"U"字型摆放,左边最上边的数字不变,其他数字按逆时针旋转    

      (3)有一个奇阶的方阵,填如数字,使得

           第一个数一定放在第一行的最中间,第二个放在右上方,行越界,放在此列的另一侧,列越界放在此行的另一侧

           行列都越界的时候,退回来,放在原来的数字下边,当要放入的地方有数字的时候,退回来,放在原来的数字下边

           

(1)

public class ArrayInsertDelete{

     static int[] a={1,2,3,4,5,6};
  static int index=6;
  static void insert(int pos,int value){
    if (index==a.length) expand();
    for(int i=index;i>pos;i--){
     a[i]=a[i-1];
    }
    a[pos]=value;

         index++;
  }
  static void delete(int pos){
    index--;
    for(int i=pos;i<index;i++){
      a[i]=a[i+1];
    }
  } 
  static void expand(){
    int[] b=new int[a.length*2];
    System.arraycopy(a,0,b,0,a.length);
    a=b;
  }
  static void print(){
    for(int i=0;i<index;i++){
      System.out.print(a[i]+"\t");
    }
    System.out.println();
  }

  public static void main(String[] args){
    print();
    insert(2,7); //{
1,2,7,3,4,5,6}

      print();
    delete(4);   //{1,2,7,3,5,6}
    print();
 }

}           

  *

 ***

*****

 ***

  *

 

a,9;

b,9.0;

c,9.9

d,99.9

int[9] a = {1,……9}

int[9] b =  {1,……9}

1*1

2*1 2*2

3*1 3* 2 3*3

=====2012.9.19作业======

1,给int类型的数组排序,比如:int[] n = {22,11,14,16,2,3,9,8,33,10};

2,求2维数组里面的最大值,求和,求平均数

3,输入3个学生对象的信息,保存到学生数组里面

4,六十花甲配比

Exception  异常
thread     线程

用JAVA语言来描述世界

用面向对象的思想描述

面向对象的思想分析:

1、抽象属性,由个体到一般,抽象出对象共同具有的静态属性

2、抽象行为,抽象出对象共同具有的动态行为

面向对象基本特性:

1,封装,通过公有的方法来改变私有的属性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: