• Java基础小知识


    1.  switch  语句能否作用在 byte  上,能否作用在 long  上,能否作用在 String上?

    在 switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体) ,整数表达式可以是 int 基本类型或 Integer 包装类型,由于,byte,short,char 都可以隐含转换为 int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long 和 String 类型都不符合switch 的语法规定, 并且不能被隐式转换成 int 类型, 所以, 它们不能作用于 swtich 语句中。

    更正 :在JDK7中,支持switch表达式为字符串类型,而不支持long类型。

    public class TestSwitch {
    
    	public static void main(String[] args) {
    		String x="awb";
    		switch(x){
    		  case "a" :
    			  System.out.println("a");break;
    		  case "b" :
    			  System.out.println("b");break;
    		  case "acb":
    			  System.out.println(x);break;
    		  default :
    			  System.out.println("no x match");
    		
    		}
    	}
    	
    	private void testlong(){
    		long x=100;
    		switch(x){
    		   //在这里编译错误,错误提示:Cannot switch on a value of type long. Only convertible int values, strings or enum variables are permitted
    		}
    	}
    
    }
    2.short s1 = 1; s1 = s1 + 1; 有什么错? short s1 = 1; s1 += 1; 有什么错?
    对于 short s1 = 1; s1 = s1 + 1;由于 s1+1运算时会自动提升表达式的类型,所以结果是 int型,再赋值给 short 类型 s1时,编译器将报告需要强制转换类型的错误,要想等号成立,必须显示将结果强转为short类型再赋值给s1。
    对于 short s1 = 1; s1 += 1;由于 +=是 java 语言规定的运算符,java 编译器会对它进行特殊处理,默认的向右转换类型,不需要人工转换,因此可以正确编译。

  • 相关阅读:
    C# Redis实战(四)
    C# Redis实战(三)
    C# Redis实战(二)
    C# Redis实战(一)
    C#连接内存数据库redis【1、Redis存读取数据】
    C#连接内存数据库redis【1、安装配置】
    c#根据配置文件反射
    内存数据库:Redis与Memcached的区别
    内存数据库:memcached与redis技术的对比试验
    【转】【涨姿势】支付宝怎么做风险控制?
  • 原文地址:https://www.cnblogs.com/elgin-seth/p/5293758.html
Copyright © 2020-2023  润新知