day02

1、Java的数据类型 
  (1)简单类型 --- 8种有符号的数据类型 
       a) 整型 
         byte       1字节 8位       -128到127 
        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.3; 
        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 
         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++相同) 

   *** System.out.println(3/2)  按整型计算 得1 *** 
   
   byte a = 1; 
   a=a+2;    //不合法,自动类型提升,赋值丢失精度 
   a += 2 ;  //不会发生自动类型提升的,合法 
   a++ ;     //不会发生自动类型提升的 
   
   1) >>=  前面是零补零,前面是一补一;   右移一位比除以2效率高 
   2) >>>=  无符号右移(强制右移都会移进零), 
    >>=和>>>=对于负数不一样 
      正数:右移n位等于除以2的n次方 
      负数:变成正数。 
   3) &&   短路与,前面为假,表达式为假,后面的操作不会进行,& 非短路运算符,会对所有条件进行判断。 
   例:  int a = 4; 
         if(a<3&(b=a)==0)   b赋值 
         if(a<3&&(b=a)==0)  b不赋值  
   4) ||   短路或,前面为真,表达式为真,后面的操作不会进行,| 会对所有条件进行判断。 
   5)instanceof,是用于判断一个对象是否属于某个类型 
   6)java中的求余运算符“%”可以对两个实型变量求余 5%2=1 
   
3、流程控制 
(1)控制流 
    if() 
    if()….else 
    if()…..else if()….else 

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

(2)switch(s){ 
         case 'a':…….. 
         case 1:……break; 
         default: 
         ………… 
     } 
    注意:switch()内数据类型为byte short char int类型,只有以上四种类型的才可以在switch()中使用。 
          case块中不加break时顺序执行下面的语句。   
          
4、循环语句 
   for(int i=0;i<n;i++){}  ---- 确定循环 
   while(){}               ---- 循环0或多次 
   do{} while();-----------注意加分号   循环1或多次       
   
5、语法   
  在main方法中要使用全局变量或调用其他方法时,要求全局变量和方法要有static修饰 
  命令行参数  java Class a b  
  args[0] = a 
  args[0] = b 
  字符串转成int类型  int i = Integer.parseInt(a);  
  
6、数组 
  内存中的连续空间 
  数组是一次性定义多个相同类型的变量  
  Java中一个数组就是一个对象,有属性,没有方法 
  
  int[] 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(); 
  } 

}           
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值