关闭

Java基础02-基本类型相关知识

标签: javafloatbyteintegerstring编程
189人阅读 评论(0) 收藏 举报
分类:
1.基本数据类型:
 byte:占一个字节,-128-127
 short:占两个字节,-32768-32767
 int:占四个字节,
 long:长整型,占八个字节,使用时加上"L"(不要使用小写的"l",容易混淆): long x = 3L;
 float:单精度,占四个字节, float x = 2.3f;
 double:双精度,占八个字节,
 boolean:布尔型,占一个字节,只能是true或false 
 char:占两个字节,0-65535 
  a.对于字符'\u0061':使用的是Unicode码表定义的字符,其中"0061"是十六进制的数据
  b.特殊含义的字符:
   \r: 回车
   \n: 换行
   键盘上按下回车键: \r\n
   \t: 制表符,代表tab
   \b: 退格键,类似backspace
   System.out.println('\'');
   System.out.println("\"");
   System.out.println("\\");
  c.
   System.out.print(' ');//正确
   System.out.print('');//错误
   System.out.print('  ');//错误
   
2.浮点数的八进制与十六进制表示的特殊之处:
 a.对于浮点数没有八进制表示,所以在下面代码中,等价于十进制表示:
  float e1 = 03.3f;
  System.out.println(e1);
  float e2 = 3.3f;
  System.out.println(e2);
  
 b.对于浮点数的十六进制表示形式,只有指数表示形式,而且使用符号是"p"或"P"(十进制的指数表示符号是e或E)
  //double f1= 0x1.0; //编译报错
  double f2=0x1.0p3;
  System.out.println(f2);
   
3.不同进制之间的转换方法:
 a.十进制->二进制/八进制/十六进制
  方法:将十进制数,除以目标进制的进制数,并取得余数
    
  //改进版:编程实现十进制转成十六进制
  int x = 198;
  StringBuilder sb = new StringBuilder();
  int temp = 0;  
  while(x > 0){   
   temp = x % 16;
   switch(temp){
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
     sb.append("temp-10+'A'");
     break;
    default:
     sb.append(temp);
   }
   x = x / 16; 
  } 
  System.out.println(sb.reverse());
  
  //最简版:使用if实现
  int x = 198;
  StringBuilder sb = new StringBuilder();
  int temp = 0;  
  while(x > 0){   
   temp = x % 16;
   if(temp < 10)
   {
    sb.append(temp); 
   }else {
    sb.append((char)(temp-10+'A')); 
   }
   x = x / 16; 
  } 
  System.out.println(sb.reverse());
  
 b.二进制/八进制/十六进制->十进制
  方法:对源进制数按位进行编号(从0开始),将每位上的数字乘以源进制数的编号次方,进行相加
  例:
   八进制306->十进制?
   =3*8^2+6*8^0
   =198
   结果:十进制198
   
 c.二进制->八进制/十六进制的快速转换
  方法:1.二进制转换八进制:每三位一看(因为三位二进制正好表示0-7,即八进制)
    2.二进制转换十六进制:每四位一看
  例:
   二进制11000110
    011-000-110(从低位开始,高位处不够补0)
     3   0   6
   结果:八进制306
   
4.码表
 a.ASCII表: 英文码表,每个字符占一个字节
 b.GB2312,GBK,GB18030码表: 包含中文,一个英文字符占一个字节,一个中文字符占两个字节(第一个字节一定是负数)
 c.Unicode码表:国际码表,一个字符占两个字节(无论是英文还是中文);java中就是使用的是这个码表
 d.UTF-8码表:国际码表,一个英文字符占一个字节,一个中文字符占三个字节
 
5.类型转换
 a.自动提升:
  表达式的数据类型自动提升
   所有的byte型、short型和char的值将被提升到int型。
   如果一个操作数是long型,计算结果就是long型;
   如果一个操作数是float型,计算结果就是float型;
   如果一个操作数是double型,计算结果就是double型
  注意:
   运算中,使用常量整形数值如10时,默认是int型;使用小数格式的数据如3.5,默认是double!
 
 b.强制类型转换
  可以直接将小类型赋值给大类型,而当将大类型数据赋值给小类型时,就需要强制类型转换,转换时就将大类型数据的低位字节值给目的类型
  
  注意:
   char,byte,short之间的转换:
   char <---> byte
   char <---> short
   (由于char类型的范围为0-65535,转换时必须使用类型转换运算符)
   参考代码:
    byte a=10;
    char b=(char)a;
    System.out.println(b);
    System.out.println(-b);
    
    byte c=-10;
    char d=(char)c;
    System.out.println(d);
    System.out.println(-d);
 
 c.变量的作用域与生命周期:
  作用域:在定义的大括号中
  生命周期:从定义开始,直到作用域结束
  例:
   public static void main(String [] args)
   {
    {
     int a = 2;
     System.out.print(a);
    }
    int a = 4;              //这样书写是可以的,因为第一个a的生命周期已经结束!
    System.out.print(a);
   }
   
  注意:
   变量定义过可以先不初始化,但是在你使用前必须进行初始化!
   
6.其他: 
 包装类的缓存值:(对于重复使用,系统会在缓存中创建重复使用的包装类对象,再次使用时直接使用缓存中的对象)
  boolean: true或false
  byte: -128-127
  short: -128-127
  int: -128-127
  long: -128-127
  char: 0-127
  (对于float和double没有)
  
  例:
  //程序输出:i==j
  Integer i = 3;
  Integer j = Integer.valueOf(3);
  if(i==j)
   System.out.println("i==j");
  else
   System.out.println("i!=j");
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:31289次
    • 积分:736
    • 等级:
    • 排名:千里之外
    • 原创:47篇
    • 转载:2篇
    • 译文:0篇
    • 评论:4条