Java学习手记--运算符和字符串的操作
1>位运算
Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。补码的规定如下:
对正数来说,最高位为0,其余各位代表数值本身(以二进制表示),如+42的补码为00101010。
对负数而言,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。如-42的补码为11010110(00101010按位取反11010101+1 即11010110)
用补码来表示数,0的补码是唯一的,都为00000000。(而在原码,反码表示中,+0和-0的表示是不唯一的,可参见相应的书籍)。而且可以用111111表示-1的补(这也是补码与原码和反码的区别)。
实例:
int n=27;
~n=-37
int型的36对应二进制是00000000 00000000 00000000 00100100,取反后是11111111 11111111 11111111 11011011,这是一个整型负数的补码,按“减1取反”的方法得到其绝对值是00000000 00000000 00000000 00100101,即十进制的37,所以该负数为-37
int n=-6;
~n=5
负数由补码来表示,正数的补码为其本身,负数的补码为该数的绝对值按位取反加1,比如-6,原码为
10000000 00000000 00000000 00000110,补码为11111111 11111111 11111111 11111010,~(-6)则为00000000 00000000 00000000 00000101,为5
2>实现两个值交换,而不使用临时变量,例如交换两个整数的值:
int a = 49, b = 57;
a = a ^ b;
b = b ^ a;
a = a ^ b;
System.out.println("a= "+a+";b= "+b);
output:a= 57;b= 49
3>右移运算符>>
右移一位相当于除2取整,而且用右移实现除法比除法运算速度要快。
比如要实现44除4的功能:44>>2
4>左移运算符<<
左移一位相当于乘2,而且用左移实现乘法比乘法运算速度要快。
比如要实现2乘8的功能:2>>3
5>条件运算符? :
int result = 0;
int i = 5;
result = i != 0 ? 100 / i : 0;//如果i!=0成立,则result=100/i.否则result=0;
System.out.println(result);
6>进制装换
十六进制:Integer.toHexString(32)
八进制:Integer.toOctalString(32)
二进制:Integer.toBinaryString(32)
7>java严格区分大小写
8>字符串方法
charAt(),comareTo(),str1.compareToIgnoreCase(str2),遇到有区别字符就判断,如无区别,再判断下一个字符,如都一样,则返回0,否则返回(str1-str2)在ASCII表的次序差
String1.concat(String2)
copyValueOf(char[] data)
copyValueOf(char[] data,int offset,int count)
getChars(int src)
endsWith(String str)
startWith(String str)
equals(Object o)
equalsIgnoreCase(String str)
indexOf(String str,int start)
lastIndexOf(char ch)
length()
String.replace(char oldChar, char newChar)方法返回被替换后的字符串
String.substring(int beginIndex, int endIndex)
String.toCharArray()
String.toUpperCase()
String.toLowerCase()
setText("" + String str)
valueOf()
StringBuffer.insert(int offset, String str)
charAt()
StringBuffer.delete(int start, int end)
StringBuffer.deleteCharAt(int index)
9>排序
Arrays.sort(int[] a),
public static int binarySearch(int[] a,int key)
String[] str = { "i", "walk", "the", "line" };
List l = Arrays.asList(str);
Collections.sort(List list);
Collections.min(List list);
Collections.max(List list);
推荐文章 |
