1 运算符
1.1 比较运算符
- 比较运算符的结果都是boolean类型,也即是要么是true,要么是false。
- 比较运算符"=="不能写成"="。
package java003;
/**
* 2017/8/31.
* 说明:
*/
public class OperateDemo {
public static void main(String[] args) {
int a = 3;
int b = 7;
System.out.print(a>b);//false
}
}
package java003;
/**
* 2017/8/31.
* 说明:
*/
public class OperateDemo {
public static void main(String[] args) {
int a = 3;
int b = 7;
System.out.print(a<b);//true
}
}
package java003;
/**
* 2017/8/31.
* 说明:
*/
public class OperateDemo {
public static void main(String[] args) {
int a = 3;
int b = 7;
System.out.print(a==b);//false
}
}
package java003;
/**
* 2017/8/31.
* 说明:
*/
public class OperateDemo {
public static void main(String[] args) {
int a = 3;
int b = 7;
System.out.print(a!=b);//true
}
}
package java003;
/**
* 2017/8/31.
* 说明:
*/
public class OperateDemo {
public static void main(String[] args) {
int a = 3;
int b = 7;
System.out.print(a>=b);//false
}
}
package java003;
/**
* 2017/8/31.
* 说明:
*/
public class OperateDemo {
public static void main(String[] args) {
int a = 3;
int b = 7;
System.out.print(a<=b);//true
}
}
package java003;
/**
* 2017/8/31.
* 说明:
*/
public class OperateDemo {
public static void main(String[] args) {
String str = "hello";
System.out.print(str instanceof String);//true
}
}
1.2 逻辑运算符
- &(与)、|(或)、!(非)、&&(短路与)、||(短路或)、^(异或)
- 逻辑运算符用于连接两个boolean类型的表达式。
package java003;
/**
* 2017/8/31.
* 说明:逻辑运算符
*/
public class OperateDemo2 {
public static void main(String[] args) {
int x = 3;
System.out.print(x >= 2 && x <= 5);
}
}
- &的特点:
- 如下图所示:表达式1&表达式2的结果。
表达式1 |
表达式2 |
结果 |
true |
false |
false |
true |
true |
true |
false |
false |
false |
false |
true |
false |
表达式1 |
表达式2 |
结果 |
true |
true |
true |
true |
false |
true |
false |
true |
true |
false |
false |
false |
package java003;
/**
* 2017/8/31.
* 说明:逻辑运算符
*/
public class OperateDemo2 {
public static void main(String[] args) {
int x = 5;
System.out.print(x > 5 || x <6);
}
}
表达式 |
结果 |
true |
false |
false |
true |
package java003;
/**
* 2017/8/31.
* 说明:逻辑运算符
*/
public class OperateDemo2 {
public static void main(String[] args) {
int x = 5;
System.out.print(x == 5);
System.out.print(!(x==5));
}
}
表达式1 |
表达式2 |
结果 |
true |
true |
false |
false |
true |
true |
true |
false |
true |
true |
true |
true |
- 我们知道,在计算机中一般0表示false,1表示true,当然,需要声明的是java中不是用0表示false,1表示true的,在java中,两者不等价。
- 异或的规律:相同为0,不同为1。即异或左右两边的表达式,如果相同,就是false,不同,就是true。
package java003;
/**
* 2017/8/31.
* 说明:逻辑运算符
*/
public class OperateDemo2 {
public static void main(String[] args) {
System.out.print(true^true);//false
System.out.print(true^false);//true
System.out.print(false^true);//true
System.out.print(false^false);//false
}
}
1.3 位运算符
- <<(左移)、>>(右移)、>>>(无符号右移)、&(与)、|(或)、^(异或)、~(反码)
- 示例:6&3,int类型的数据在内存中是32位,此处为了方便,就没有画32位了。
package java003;
/**
* 2017/8/31.
* 说明:位运算符
*/
public class OperateDemo3 {
public static void main(String[] args) {
int a = 6 ;
int b = 3;
System.out.print( a & b);
}
}
package java003;
/**
* 2017/8/31.
* 说明:位运算符
*/
public class OperateDemo3 {
public static void main(String[] args) {
int a = 6 ;
int b = 3;
System.out.print( a | b);
}
}
package java003;
/**
* 2017/8/31.
* 说明:位运算符
*/
public class OperateDemo3 {
public static void main(String[] args) {
int a = 6 ;
int b = 3;
System.out.print( a ^ b);
}
}
package java003;
/**
* 2017/8/31.
* 说明:位运算符
*/
public class OperateDemo3 {
public static void main(String[] args) {
int b = 3;
System.out.print( ~ b);//-4
}
}
package java003;
/**
* 2017/8/31.
* 说明:位运算符
*/
public class OperateDemo3 {
public static void main(String[] args) {
int b = 3;
System.out.print( 3 << 2);
}
}
- 示例:3 >>2 ,右移一位除以2,如果首个数字是0,则右移的时候,左边空位补0,;如果首个数字是1,则右移的时候,左边空位补1。因为在计算机中0表示正数,1表示负数。
package java003;
/**
* 2017/8/31.
* 说明:位运算符
*/
public class OperateDemo3 {
public static void main(String[] args) {
int b = 3;
System.out.print( b >> 2);
}
}
- 示例:3 >>>2,不管首位是0还是1,在左边空位都是补0。
package java003;
/**
* 2017/8/31.
* 说明:位运算符
*/
public class OperateDemo3 {
public static void main(String[] args) {
int b = 3;
System.out.print( b >>> 2);
}
}
package java003;
/**
* 2017/8/31.
* 说明:位运算符
*/
public class OperateDemo3 {
public static void main(String[] args) {
System.out.print(2 << 3);
}
}
- 面试题2:对两个整数变量的值进行交换(不需要第三变量)
- 思路①,有弊端,如果两个整数的数值太大,会超出int范围,会引起精度问题。
package java003;
/**
* 2017/8/31.
* 说明:位运算符
*/
public class OperateDemo3 {
public static void main(String[] args) {
int a = 2;
int b = 3;
a = a - b ;
b = a + b;
a = b - a;
System.out.print("a="+a+",b="+b);
}
}
package java003;
/**
* 2017/8/31.
* 说明:位运算符
*/
public class OperateDemo3 {
public static void main(String[] args) {
int a = 2;
int b = 3;
a = a ^ b;
b = a ^ b ;
a = a ^ b;
System.out.print("a="+a+",b="+b);
}
}
1.4 三元运算符
- 格式:
- (条件表达式) ? 表达式1 :表达式2;
- 如果条件表达式为true,运算后的结果是表达式1,
- 如果条件表达式为false,运算后的结果是表达式2。
package java003;
/**
* 2017/9/1.
* 说明:三元运算符
*/
public class OperateDemo4 {
public static void main(String[] args) {
int a = 3;
int b = 10;
int c = (a >= b) ? a : b;
System.out.print("最大值是:"+c);
}
}
2 程序的流程控制
2.1 顺序结构
package java003;
import sun.applet.Main;
/**
* 2017/9/1.
* 说明:顺序结构
*/
public class OperateDemo5 {
public static void main(String[] args) {
System.out.print("哈哈");
System.out.print("呵呵");
System.out.print("嘻嘻");
System.out.print("笨笨");
}
}
2.2 分支语句
if(条件表达式){
执行语句1;
}else{
执行语句2;
}
if(条件表达式1){
执行语句1;
}else if(条件表达式2){
执行语句2;
}else{
执行语句3;
}
package java003;
/**
* 2017/9/1.
* 说明:if
*/
public class IfDemo1 {
public static void main(String[] args) {
int x = 3;
if(x > 1){
System.out.println("正确");
}
System.out.println("结束");
}
}
package java003;
/**
* 2017/9/1.
* 说明:if
*/
public class IfDemo2 {
public static void main(String[] args) {
char gender = '男';
if(gender == '男'){
System.out.println("性别为男");
}else{
System.out.println("性别为女");
}
}
}
package java003;
/**
* 2017/9/1.
* 说明:if
*/
public class IfDemo3 {
public static void main(String[] args) {
int x = 3;
if(x >1){
System.out.print("a");
}else if(x >2){
System.out.print("b");
}else if(x >3){
System.out.print("c");
}else{
System.out.print("d");
}
}
}
- 练习一:用户输入指定的数字,然后输出对应的星期几?
package java003;
/**
* 2017/9/1.
* 说明:
*/
public class IfTest1 {
public static void main(String[] args) {
int i = 5;
if(i == 1){
System.out.print("星期一");
}else if(i == 2){
System.out.print("星期二");
}else if(i == 3){
System.out.print("星期三");
}else if(i == 4){
System.out.print("星期四");
}else if(i == 5){
System.out.print("星期五");
}else if(i == 6){
System.out.print("星期六");
}else if(i == 7){
System.out.print("星期日");
}else{
System.out.print("输入错误");
}
}
}
package java003;
/**
* 2017/9/1.
* 说明:
*/
public class IfTest2 {
public static void main(String[] args) {
int month = 3;
if((month == 3) || (month == 4 )|| (month == 5)){
System.out.print("春季");
}else if((month == 6) || (month == 7 )|| (month == 8)){
System.out.print("夏季");
}else if((month == 9) || (month == 10 )|| (month == 11)){
System.out.print("秋季");
}else if((month == 12) || (month == 1 )|| (month == 2)){
System.out.print("冬季");
}else{
System.out.print("输入错误");
}
}
}