您的位置:首页 > 职场人生

黑马程序员_java编程基础第2天9-16

2013-11-19 13:30 274 查看
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

算数运算符

int x=4270;

    x=x/1000*1000;      结果是4

% 取余   System.out.println(10%4);   结果是 2

5%1    0

1%5    0

2%5    2

3%5    3

-1%5    -1

1%-5     1

++  自增  b=a++;  先算= 再算++       b=++a;先算++再算=

--   自减

+ 正号/  加号/ 字符串加号     “hahahhhhhhhhh“+"hhhhhhhhhhhhhhhhh”

System.out.println("5+5="+5+5); //"5+5=5”+5 -->   "5+5=55"           //字符串数据和任何数据使用+都是相连接,最终都会变成字符串。

int a=3,b;
b=a++;
System.out.println("a="+a+",b="+b);    //字符输出数据跟直观

转义字符

ln 代表 换行
System.out.print("hello world");     

System.out.println("hello java");   

结果:hello worldhello java

转义字符:通过\ 来转变后面字母或者符号的含义
\n 换行    linux系统中回车符是一个字符表示 \n
\b 退格     相当于backspace
\r  按下回车键    windows系统中,回车符是由两个字符来表示\r\n
\t  制表符  相当于tab键

System.out.print("hello\nworld");
结果:
hello
world

System.out.println("\"hello java\"");  //注意\ 在" 前边

结果:"hello java"

System.out.println("\\hello\\");
结果:\hello\

char ch='\n';  OK
char ch='\' ';  OK

char ch='\" ';  OK

char ch=' ' ';  挂了
char c='你'; ok

赋值和比较运算符

赋值运算符 += -= *= /= %=

short s=4;
s=s+5; //挂了 编译失败,因为s会被提升为int类型,运算后的结果还是int类型。无法赋值给short类型

short s=4;
s+=5;            // ok  编译通过,因为+=运算符在给赋值时,自动完成了强转操作。

比较运算符的结果都是boolean型, 要么是true 要么是false

== 相等于   !=  不等于   <  >  <=  >=    instanceof 检查是否是类的对象     例"hello" instanceof String  结果true

System.out.println(3>4); false

注意==    不能写成=

逻辑运算符

运算符  运算 范例
结果
&            AND 与     
|   OR 或
^   XOR 异或   true^false  
 true              
! Not 非
!ture false
&& AND 短路      false&&true    false
|| OR 短路        false||true        true

int x=4;
6>x>3;//错误      
x>3 & x<6;// OK
逻辑运算符用于连接boolean型的表达式

^: 异或; 就是和 | 有点不一样,当true^true=false   (就是两边相同 false,两边不同 为ture)
System.out.println(false^false);  //true

&和&&的特点:
&:无论左边是true是false。右边都运算
&&:当左边为false时,右边不运算

| :两边都参与运算
||:当左边为true时,右边不运算。

位运算符(左移右移)

位运算是直接对二进制进行运算
运算符 运算
范例
<< 左移
3<<2=12  -->3*2*2=12
>> 右移
3>>1=1-->3/2=1
>>>                 无符号右移    3>>>1=1 -->3/2=1
&   与运算      
6&3=2
|  或运算
6|3=7
^ 异或运算
6^3=5
~ 反码
~6=-7
移n位,就是对乘以或者除以2的n次幂

1111-1111 1111-1111 1111-1111 1111-1010  =-6
-6>>2    //最高位补什么由原有数据的最高位值而定
111111-1111 1111-1111 1111-1111 1111-10
-6>>>2  //无论最高位是什么右移后由0补
001111-1111 1111-1111 1111-1111 1111-10

6&3  :
   110        6
& 011       3
    010       2

System.out.println(6&3);       //2

7^4^4=7  //一个数异或同一个数两次,结果还是那个数     异或运用于加密

位运算(练习)

1.最有效率的方式算出2乘以8等于几?
2*8 不是最高效  位运算高效 2<<3

2.对两个整数变量的值进行互换? (不需要第三方变量)?

int n=3,m=8;

System.out.println("n="+n=",m="+m);
//1.通过第三方变量。 (开发时用这个)
int temp;
temp=n;
n=m;
m=temp;
//2.不用第三方变量
n=n+m;  // 如果n和m的值非常大,容易超出int范围,有局限性
m=n-m;
n=n-m;
//3.技巧试方式
n=n^m;
m=n^m;   // (n^m)^m;
n=n^m;    // (n^m)^((n^m)^m);

获取16进制位:

int num=60;
// 获取60的最低4位,通过&15;
int n1=num&15;
System.out.println((n1>9)?(char)(n1-10+‘A'):n1);//有错误;

//要获取下一组四位,将60右移四位;
int temp=60>>4;   //  >> 要是负数的话 移不完 总是补1, >>> 可以解决 最高位补0;

//对temp的值进行最低四位的获取;
int n2=temp&15;
System.out.println((n2>9)?(char)(n2-10+‘A'):n2);   //有错误;

16进制 15  移4位;
8进制    7    移3位;
2进制     1   移1位;

三元运算符

(条件表达式)?表达式1:表达式2;
如果条件为true,运算结果为表达式1;
如果条件为false,运算结果为表达式2;

示例:获取两个数中大数
int x=3,y=4,z;
z=(x>y)?x:y;  //z变量存储的就是两个数的大数

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: