• Java学习日记——基础篇(三-上)基本语法之运算符和流程控制


    运算符

    算术运算符

    听其名而知其意,就是用于计算的,java中常用的是:

    • +   加
    • -    减
    • *    乘
    • /    除
    • %  取模,取余——%可以用来得到两个数相除的余数

    小练习——写一个java程序判断两个数是否能够整除

    public class Demo1	//公共类必须和文件名相同
    {
    	public static void main (String []args)
    	{
    		int a=2;
    		int b= 4;
    		if(b%a == 0)    //=代表赋值  ==代表相等
    		{
    			System.out.println("可以整除!");
    		}
    		else
    		{
    			System.out.println("不能整除!");
    		}
    	}
    }
    
    运行结果:
    D:myJavaDemo>javac -encoding UTF-8 Demo1.java
    
    D:myJavaDemo>java Demo1
    可以整除!
    
    • ++  自加 —— a++ —— a = a + 1
    • --  自减 —— b-- —— b = b - 1

    实例:前自加和后自加的区别

    public class Demo1	
    {
    	public static void main (String []args)
    	{
    		int a = 1; 
    		int b = ++a;
    		int c = 1;
    		int d = c++;
    		System.out.println(b);
    		System.out.println(d);
    	}
    }
    
    输出结果:
    2
    1
    

      结论:总之就记住 ++ 在 a 前面,a的值就会先则增加。-- 也是相同的

    int b = ++a;
    {
    	a = a + 1;
    	b = a;
    }
    int b = a++;
    {
    	b = a;
    	a = a+1;
    } 
    

      问:这段代码的结果是多少

    public class Demo1	
    {
    	public static void main (String []args)
    	{
    		int a = 3;
    		int b = ++(++a)--;
    		System.out.println(b);
    	}
    }
    

      答案是:

    D:myJavaDemo>javac -encoding UTF-8 Demo1.java
    Demo1.java:12: 错误: 意外的类型
                    int b = ++(++a)--;
                               ^
      需要: 变量
      找到:    值
    1 个错误
    
    
    答案是会报错, 可见自加自减运算符并不是随心所欲的进行自加自减的
    
    为什么会报错呢?
        因为++a在进行自加后,就处于一个不稳定状态,编译器不知道a是什么,确定不了a是一个小数还是一个字符或者什么的。
        报错说的错误就是我不知道,我不知道就是个意外。
        所以自加自减运算符要跟着一个确定的值
    
    • +=   左加
    • -=   左减
    • /=   左除
    • *=   左乘
    • %=   左取模  

    小例子

    a += 90  ——>  a = a + 90
    b +=  a   ——>  b = b + a
    a -= 90   ——>  a = a - 90
    a *= 90  ——>  a = a * 90
    a /= 90   ——>  a = a / 90
    a %= 90 ——>  a = a % 90
    

    关系运算符  

    • ==   等于
    • >    大于
    • >=   大于等于
    • <    小于
    • <=   小于等于
    • !=   不等于

    练习:请编写一个程序,改程序可以接受两个数(可以使整数,也可以是小数),并判断这两个数是大于?小于?还是等于?

    import java.io.*;
    //InputStreamReader 和 BufferedReader 都在这个包里面,所以要把这个包引进来
    
    public class Demo1	
    {
    	public static void main (String []args)
    	{
    		//从控制台接受两个数
    		try
    		{
    			//输入流,从键盘接收数
    			InputStreamReader isr = new InputStreamReader(System.in);		//system.in代表标准输入,就是键盘
    			BufferedReader br = new BufferedReader(isr);
    			//这些内容到控制台中才会详细讲解
    			
    			System.out.println("请输入一个数");	//提示
    			
    			//从控制台读取一行数据
    			String a1=br.readLine();
    			//控制台不管输入的是数还是字符串,他都认为是字符串,所以要用String接受
    			
    			System.out.println("请输入第二个数");	//提示
    			String a2=br.readLine();
    			
    			//把String -> float
    			float num1 = Float.parseFloat(a1);
    			float num2 = Float.parseFloat(a2);
    			if (num1 > num2)
    			{
    				System.out.println("第一个大");
    			}
    			if(num1 == num2)
    			{
    				System.out.println("相等");
    			}
    			if(num1 < num2)
    			{
    				System.out.println("第二个大");
    			}
    			
    			
    		}catch(Exception e)
    			{
    				e.printStackTrace();
    			}
    	}
    }
    

      注意如果出现这样的报错信息——找不到符号,说明编译器找不到这个类,就要意识到自己有没有把包含这个类的包导进去

    D:myJavaDemo>javac -encoding UTF-8 Demo1.java
    
    Demo1.java:19: 错误: 找不到符号
                            InputStreamReader isr = new InputStreamReader(System.in);
                            ^
      符号:   类 InputStreamReader
      位置: 类 Demo1
    

    逻辑运算符

      逻辑运算符——用于进行逻辑判断  

    • ||   或
    • &&   与
    • !    非 —————— 把结果进行取反

    案例

    public class Demo1
    {
    	public static void main(String args[])
    	{
    		int a=90; int b = 90;
    		if(a==b||a>8){System.out.println("ok1");}
    		b--;
    		if(a>b&&a>8){System.out.println("ok2");}
    		if(!(a<=b)){System.out.println("ok3");}
    	}
    }
    
    
    输出结果:
    ok1
    ok2
    ok3

    三大流程控制——顺序控制,分支控制,循环控制 

    顺序控制

      程序从上到下,从左向右,依次执行

    示例:

    public class Demo1
    {
    	public static void main(String args[])
    	{
    		int a = 7;
    		System.out.println("a="+a);
    		System.out.println("hello!");
    		a++;
    		System.out.println("a="+a);
    		System.out.println("qwq");
    		a++;
    		System.out.println("a="+a);
    	}
    }
    

      

    分支控制

      让程序有选择的执行,分支控制有三种——单分支,双分支,多分支

    单分支结构

    if(条件表达式)
    {
            语句;
    }
    
    //条件表达式可以很长,但最终结果是个布尔值就行

    双分支结构

    if(条件表达式)
    {
            语句;
    }
    else
    {
            语句;
    }
    

    多分支结构一

    if(条件表达式)
    {
            语句;
    }
    else if(条件表达式)
    {
            语句;
    }
    else if(条件表达式)
    {
            语句;
    }
    else
    {
            语句;
    }

    小例子——就是多个分支中选择一个走出来

    public class Demo1
    {
    	public static void main(String args[])
    	{
    		int a = 17;
    		if(a>18)
    		{
    			System.out.println("a>18");
    		}
    		else if(a>10 && a<18)
    		{
    			System.out.println("a>10 && a<=18");
    		}
    		else{
    			System.out.println("others");
    		}
    	}
    }
    

    多分支结构二——开关结构

    switch(条件表达式)
    {
    	case 常量1:
    		语句1;
    		break;
    	case 常量2:
    		语句2;
    		break;
    	.........	
    	case 常量n;
    		语句n;
    		break;
    	default:
    		语句;
    		break;
    }
    

      小例子:

    public class Demo1
    {
    	public static void main(String args[])
    	{
    		char c = 'a';
    		switch(c)
    		{
    			case 'a':
    				System.out.println("今天星期一");
    			case 'b':
    				System.out.println("今天星期二");
    			default:
    				System.out.println("不知道星期几");
    		}
    	}
    }
    
    
    输出结果:
    今天星期一
    今天星期二
    不知道星期几
    
    因为没有加break语句,所以都会输出
    

      加break语句

    public class Demo1
    {
    	public static void main(String args[])
    	{
    		char c = 'a';
    		switch(c)
    		{
    			case 'a':
    				System.out.println("今天星期一");
    				break;
    			case 'b':
    				System.out.println("今天星期二");
    				break;
    			default:
    				System.out.println("不知道星期几");
    		}
    	}
    }
    
    输出结果:
    今天星期一
    

    注意1:如果case后面的值相同,就会出现这样的报错——标签重复

    Demo1.java:11: 错误: case 标签重复
                            case 'a':
                            ^
    1 个错误
    

    注意2:switch后的 条件表达式的数据类型,应该和case后的常量类型一致

    import java.io.*;
    public class Demo3
    {
    	public static void main (String args[]) throws Exception
    	{
    		String str;
    		int a;
    		BufferedReader buf;
    		buf=new BufferedReader(new InputStreamReader(System.in));
    		str = buf.readLine();
    		a=Integer.parseInt(str);
    		switch(a)
    		{
    			case a<=100&&a>=90:System.out.println("优");break;
    			case a<90&&a>=80:System.out.println("良");break;
    			case a<80&&a>=70:System.out.println("中");break;
    			case a<70&&a>=60:System.out.println("及格");break;
    			case a<60&&a>=0:System.out.println("不及格");break;
    			default:System.out.println("input error");break;
    		}
    	}
    }
    
    
    
    报错:
    D:myJavaDemo>javac -encoding UTF-8 Demo3.java
    Demo3.java:14: 错误: 不兼容的类型: boolean无法转换为int
                            case a<=100&&a>=90:System.out.println("优");break;
                                       ^
    Demo3.java:15: 错误: 不兼容的类型: boolean无法转换为int
                            case a<90&&a>=80:System.out.println("良");break;
                                     ^
    Demo3.java:16: 错误: 不兼容的类型: boolean无法转换为int
                            case a<80&&a>=70:System.out.println("中");break;
                                     ^
    Demo3.java:17: 错误: 不兼容的类型: boolean无法转换为int
                            case a<70&&a>=60:System.out.println("及格");break;
                                     ^
    Demo3.java:18: 错误: 不兼容的类型: boolean无法转换为int
                            case a<60&&a>=0:System.out.println("不及格");break;
                                     ^
    5 个错误
    //逻辑运算符和关系运算符最后返回的是个boolean(布尔类型),而case后面需要int类型

      tips:

    InputStreamReader isr = new InputStreamReader(System.in);
    buf = new BufferedReader(isr)
    
    上面的代码和下面的代码是相同的,之前的代码是用的上面的这种形式
    
    buf = new BufferedReader(new InputStreamReader(System.in));
    

    注意3:switch中可用的数据类型主要是:byte , short , int , char , enum(枚举类型)

    public class Demo4
    {
    	public static void main(String args[])
    	{
    		int a = 20.1;
    		switch(a)
    		{
    			case 12.3:System.out.println("12.3");break;
    			case 4.5:ystem.out.println("4.5");break;
    			default:System.out.println("其它");
    		}
    	}
    }
    
    
    
    
    
    报错:
    D:myJavaDemo>javac -encoding UTF-8 Demo4.java
    Demo4.java:5: 错误: 不兼容的类型: 从double转换到int可能会有损失
                    int a = 20.1;
                            ^
    Demo4.java:8: 错误: 不兼容的类型: 从double转换到int可能会有损失
                            case 12.3:System.out.println("12.3");break;
                                 ^
    Demo4.java:9: 错误: 不兼容的类型: 从double转换到int可能会有损失
                            case 4.5:ystem.out.println("4.5");break;
                                 ^
    Demo4.java:9: 错误: 程序包ystem不存在
                            case 4.5:ystem.out.println("4.5");break;
                                          ^
    4 个错误

    循环控制

    循环控制就是让你的代码可以循环执行

    后续

  • 相关阅读:
    hbase distributed setup and configuration
    代码优化 性能调优
    正则表达
    [转载]Java&.Net虚拟机精简(GreenJVM&GreenDotNet发布)
    [JQuery]一款不错的jquery验证框架
    js特效集
    jQuery滚动插件2 jCarousel
    c3p0连接池
    php5 apache config
    jQuery滚动插件 (轮播)
  • 原文地址:https://www.cnblogs.com/houzhaohui/p/9587754.html
Copyright © 2020-2023  润新知