黑马程序员_Java编程基础(二)
来源:互联网 发布:2017网络婚恋诈骗 编辑:程序博客网 时间:2024/06/07 13:39
---------------------- android培训 、java培训、期待与您交流! ----------------------
运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三元运算付。
1、 算术运算符:+、-、*、/、%、+ +、- -、+(字符串相加)
注:%取模规律:如,若a<b 取a; a==b取0; a>b 取余;若b=1,则取0;若有负数,则只看a 如:-1%5 --->-1 1%5 --->1。
示例代码:
/*注:取余运算*/public class QuYu{ public static void main(String args[]) { int a,b; a=-3%2; b=3%-2; System.out.println(a); System.out.println(b); }}
[小知识点]:1、字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
2、转义字符:通过\来转变后面字母或者符号的含义。
\n:换行。
\r:按下回车键。
\b:退格。相当于backspace。
\t:制表符。相当于tab键。制表符对的相当齐(特别是以后得九九乘法表应用)
注:linux系统里面换行用\n表示的
windows系统里面回车符用\r\n表示的
dos里面直接能识别\n
如:System.out.print("hello \t world");
要想输出带双引号的hello,就用到转义字符了,在要转义的字符前加\。如:System.out.println("\"hello\"");
2、赋值运算符:=、+=、-=、*=、/=、%=
示例:int a=3; a+=5;等同运算 a=a+5;
思考:short s = 3; s = s + 2; s += 2; 有什么区别?
解析:1、s = s + 2 //编译失败,因为会被提升为int类型,运算后的结果还是int类型。无法赋值给short类型。
2、s += 2 //编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。
3、比较运算符:==、!=、<、>、<=、>=、instanceof(检查是否是类的对象)
注:1、比较运算符的结果都是boolean型,也就是要么是true,要么是false。
2、比较运算符”==”不能误写成”=”。
4、逻辑运算符:&、|、^、!、&&、| |
注:1、逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6。
2、一般用&&、| |进行连接的,&、|用于连接布尔型表达式、位运算。
注:&(与):只要两边的boolean表达式结果,有一个为false,那么结果就是false。
只有两边都为true,结果才为true。
如:true & true = true;
true & false = false;
false & true =false;
false & false = false;
|(或):两边只要有一个为true,结果为true。只有两边都有false,结果为false。
如:true | true = true;
true | false = true;
false | true = true;
false | false =false;
^(异或):就是和|有点不一样,当true ^ true = false;两边相同结果是false。两边不同结果是true。
如:true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
!(非):! ture = false。
&&(短路即双与):&和&&的特点:&:无论左边是true还是false,右边都运算。
&&:当左边为false时,右边不运算。
||(短路即双或):|和||的特点:|:两边都参与运算。
||:当左边为true,右边不运算。
5、位运算符:<<、>>、>>>、&、|、^、~
注:<<(左移):相当于乘与2的倍数;被移除的高位丢弃,空缺位补0。
>>(右移):相当于除以2的倍数;被移除的二进制高位是0,右移后,空缺位补0,最高位是1,空缺位补1。
>>>(无符号右移):被移位二进制最高位无论是0或者是1,空缺位都用0补。
&(与运算):二进制位进行&运算,只有1&1时结果是1,否则是0。
|(或运算):二进制位进行|运算,只有0|0时结果是0,否则是1。
^(异或运算):任何相同二进制位进行^运算,结果是0:1^1=0, 0^0=0;不相同二位^运算结果是1:1^0=1, 0^1=1。
~(反码):~6 = -7
注:1、位运算是直接对二进制进行运算。位运算其实是最快的一种运算,但是它有一个局限性:它都是在以2的倍数在增长,即以2为基数。
2、二进制1就是true,0就是false。
3、移n位,就是对乘以或者除以2的n次幂。
4、-6的二进制就是 6的二进制取反+1。即:6二进制取反+1=-6。即:6二进制取反=-6-1=-7。
~(反码):相当于取反。6二进制反码(取反)=-6-1=-7
5、^异或符号的应用:加密、一个数异或同一个数两次还是那个数。
如:代码1:
/*利用“异或”运算性质,对几个字符加密并输出密文,然后再解密。*/class Password{ public static void main(String args[]) { char a1='十',a2='点',a3='进',a4='攻'; char secret='8'; a1=(char)(a1^secret); a2=(char)(a2^secret); a3=(char)(a3^secret); a4=(char)(a4^secret); System.out.println("密文:"+a1+a2+a3+a4); a1=(char)(a1^secret); a2=(char)(a2^secret); a3=(char)(a3^secret); a4=(char)(a4^secret); System.out.println("原文:"+a1+a2+a3+a4); }}
注:位运算的练习:
应用1:
/*最有效率的方式算出2乘以8等于几?*/public class Demo { public static void main(String args[]) { //输出打印2左移3位的结果。 System.out.println(2<<3); }}
应用2:
/*要求:对两个整数变量的值进行互换(不用第三方变量)*/public class WeiYiHuo{ public static void main(String[] args) { int m=8,n=3; System.out.println("原始值:m="+m+",n="+n); n = n ^ m; m = n ^ m; //(n^m)^m; n = n ^ m; //n^(n^m); System.out.println("异或后:m="+m+",n="+n); }}
当然了对两个整数变量的值进行互换还有以下的方法:
/*第1种:通过第三方变量*/ int n=3,m=8,temp; temp = n; n = m; m = temp; //开发最常用的/*第2种*/ int n=3,m=8; n = n + m; m = n - m; n = n - m; //如果n和m的值非常大,容易超出int范围。
应用3:
6、三元运算符:
格式: (条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
示例:获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y; //z变量存储的局势两个数的大数。
注:表达式就是具有一定语法规则的语句。
---------------------- android培训 、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
- 黑马程序员_Java编程基础(二)
- 黑马程序员_java编程基础
- 黑马程序员_java编程基础
- 黑马程序员_Java编程基础
- 黑马程序员_java编程基础
- 黑马程序员_Java基础_编程基础
- 黑马程序员_Java基础语法(二)
- 黑马程序员_java基础之二
- 黑马程序员_java基础之二
- 黑马程序员_java基础(二)
- 黑马程序员_Java语法基础(二)
- 黑马程序员_java基础(二)
- 黑马程序员_java基础加强(二)
- 黑马程序员_JAVA基础_IO流(二)
- 黑马程序员_Java编程基础下
- 黑马程序员_java编程基础01
- 黑马程序员_java编程基础02
- 黑马程序员_java编程基础03
- dreamweaver cs5精简版安装包
- UVa10006-Carmichael Numbers 快速幂运算
- 结合tomcat源码谈谈http get请求的乱码问题
- linux下解压命令大全
- 手机网络游戏框架体系要点分析
- 黑马程序员_Java编程基础(二)
- [Android] ADT关联源码与API文档 [2013-06-26更新]
- C++著名程序库的比较和学习经验
- 为何在匿名内部类中只能问被final修饰的本地变量?
- 上兴远控原理疑问
- readn writen实现linux下socket缓冲区读写
- 堆栈的区别
- OAuth2.0简介(QQ登录)
- javaSocket与C通信