java基础知识笔记
2013-06-22 16:58
183 查看
<<,有符号的左移位操作;左移之后的空位用0补充。
>>,有符号的右移位操作;右移之后的空位用符号位补充,如果是正数用0补充,负数用1补充。(逻辑右移)
无符号的移位只有右移,没有左移使用“>>>”进行移位,都补充0 ,也叫算术右移;
移位操作的数据类型可以是byte, char, short, int, long型,但是对byte, char, short进行操作时会先把它们变成一个int型,最后得到一个int型的结果,对long型操作时得到一个long型结果,不可以对boolean型进行操作。
移位操作符可以和=合并起来,即 <<= 、 >>= 和 >>>=。例如 a >>= 2; 表示将a右移两位后的值重新赋给a。
当时在使用这三个操作符对 byte, char, short型数据进行操作时要注意,如下代码:
public class ShiftTest
{
public static void main(String [] args)
{
byte a;
byte b;
byte c;
a = 127;
b = 127;
c = 127;
a <<= 2;
System.out.println(a);
System.out.println(b <<= 2);
System.out.println(c << 2);
}
}
运行结果是:
-4
-4
508
这说明了在操作a <<= 2 执行过程是这样的:先将 byte型的数 127变成int型,左移2位得到 508,然后把508赋给byte型变量a时只是简单地"折断"(truncate)得到数-4。编译时编译器不会提示你可能损失精度(实际上在本例中确实是损失精度了),但是如果你把a <<= 2改成 a = a << 2;编译器就会提示可能损失精度了。
char 是16位无符号整数,值是unicode编码
UTF-8 :变长编码1~N方案,英文1byte,中文3byte
序列化:将数据转换成n个byte叫序列化
--
优秀是一种习惯
>>,有符号的右移位操作;右移之后的空位用符号位补充,如果是正数用0补充,负数用1补充。(逻辑右移)
无符号的移位只有右移,没有左移使用“>>>”进行移位,都补充0 ,也叫算术右移;
移位操作的数据类型可以是byte, char, short, int, long型,但是对byte, char, short进行操作时会先把它们变成一个int型,最后得到一个int型的结果,对long型操作时得到一个long型结果,不可以对boolean型进行操作。
移位操作符可以和=合并起来,即 <<= 、 >>= 和 >>>=。例如 a >>= 2; 表示将a右移两位后的值重新赋给a。
当时在使用这三个操作符对 byte, char, short型数据进行操作时要注意,如下代码:
public class ShiftTest
{
public static void main(String [] args)
{
byte a;
byte b;
byte c;
a = 127;
b = 127;
c = 127;
a <<= 2;
System.out.println(a);
System.out.println(b <<= 2);
System.out.println(c << 2);
}
}
运行结果是:
-4
-4
508
这说明了在操作a <<= 2 执行过程是这样的:先将 byte型的数 127变成int型,左移2位得到 508,然后把508赋给byte型变量a时只是简单地"折断"(truncate)得到数-4。编译时编译器不会提示你可能损失精度(实际上在本例中确实是损失精度了),但是如果你把a <<= 2改成 a = a << 2;编译器就会提示可能损失精度了。
char 是16位无符号整数,值是unicode编码
UTF-8 :变长编码1~N方案,英文1byte,中文3byte
序列化:将数据转换成n个byte叫序列化
--
优秀是一种习惯
相关文章推荐
- Java基础知识复习笔记(二)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.2面向对象技术(4.2.3-4.2.5)
- 【java基础知识(学习笔记)】--随机数类Random
- Java基础知识强化之集合框架笔记23:ArrayList存储字符串并遍历
- Java基础知识强化之IO流笔记71:NIO之 NIO的(New IO流)介绍
- Java基础知识强化之集合框架笔记48:产生10个1~20之间的随机数(要求:随机数不能重复) 简洁版
- 黑马程序员_java基础笔记(09)...HTML基本知识、CSS、JavaScript、DOM
- Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据
- Java基础知识强化之网络编程笔记25:Android网络通信之 Future接口介绍(Java程序执行超时)
- JAVA的基础知识(给自己看的笔记)。
- Java基础知识强化之集合框架笔记51:Map集合之Map集合的功能概述与测试
- Java基础知识强化之集合框架笔记56:Map集合之HashMap集合(HashMap<String,Student>)的案例
- Java基础知识笔记(一:修饰词、向量、哈希表)
- java基础知识(读书笔记,练习题笔记)
- Java基础知识强化之网络编程笔记23:Android网络通信之 Volley(Google开源网络通信库)
- JAVA基础知识学习笔记(流程控制、数组)
- Java基础知识_毕向东_Java基础视频教程笔记(5-10 面向对象)
- Java基础知识强化之IO流笔记55:IO流练习之 自定义类模拟LineNumberReader的获取行号功能案例
- Java基础知识强化之IO流笔记19:FileOutputStream的三个write方法
- Java基础知识强化之集合框架笔记04:Collection集合的基本功能测试