1.java整形变量078:在java数字里数字表达式前面加上0表示8进制,因为8进制里表示数字只有0-7,所以这里的表达式有错误。相对而言,077就是合法的,转换成10进制就是63(7*8+7=63)。

2.以下程序错误的是:

  short s = 1 ; s = s + 1 ;

  这里s+1表示为int类型,不能直接赋值为short

一、程序结构

  1.什么时候用assert?

  assert是断言,断言是一个包含布尔表达式的语句,在执行这个语句的时候,假定该表达式为True,如果表达式计算为false,那么系统会报告一个Assertionerror,用于调试的目的。

assert(a>0);    //throws an Assertionerror if a<=0
断言有以下两种形式:
(1)assert Expression1;
(2)assert Expression1:Expression2;

  Expression1应该总是产生一个布尔值。Expression2可以是一个值的任何表达式,这个值用于生成更多调试信息的String消息。

  断言在默认的情况下是禁用的,在编辑的时候需要启用断言。

  2.main方法必须是public的,static void main(String[] args)

二、运算符

  1.以下代码的输出结果是:()

public class Test4 {
public static void main(String[] args) {
int a = 5;
System.out.println("value is "+((a<5)?10.9:9));
} }
//输出结果是9.0

  2.以下代码输出结果是:

 public class Test4 {
public static void main(String[] args) {
char x = 'x';
int i = 10 ;
//第一个输出的x被提升为int型了,因为i是int型,x的值为120,所以第一个值为120
System.out.println(false?i:x);
//当后两个表达式有一个是常量表达式的时候,另外一个是类型T的时候,,而常量表达式可以被T类型表示的时候,输出的结果是T类型
System.out.println(false?10:x);
} } 最后的结果是120 x

    (1)int i =10 中i是一个变量,因此第一个输出的x被提升到了int型,因为i是int型,所以第一个输出的x也被提升到了int型,而x的int值为120,所以第一个输出为120

    (2)表达式false?10:x,当后面两个表达式有一个是常量表达式时,另外一个类型是T时,而常量表达式可以被T表示的时候,输出结果就是T类型,所以本题中最后的输出时T。

  3.What does the following program print?(先面程序运行的结果是多少?)

 public class Test5 {
public static void main(String[] args) {
int m = 5 ;
int n = 5 ;
if((m!= 5) && (n++==5)){}
System.out.println("a."+n); m=n=5;
if((m!=5) &(n++==6)){}
System.out.println("b."+n); m=n=5;
if((m==5) || (n++==5)){}
System.out.println("c."+n); m=n=5;
if((m==5) || (n++==6)){}
System.out.println("d."+n); int a = 1,b =2 ;
int c = a&b;
System.out.println("a&b"+c);
} }

    (1)位运算符&、|、 ^

    (2)&、|逻辑运算与&&、||逻辑运算的重要区别是:前者是非短路运算,后者是短路运算,

      对于&&而言,凡是前面是false的,那后面的就不用再做了,对于||而言,如果前面的是true,那么后面的就不用在做了,这就是所谓的短路运算。相对而言,布尔运算符就没有这个特点,无论&,|前面是true还是false,运算法后面还要进行计算

    (3)代码分析:

1      int m = 5 ;
int n = 5 ;
if((m!= 5) && (n++==5)){}
System.out.println("a."+n);

    对于这段代码而言,m=5,为false,所以前面的就已经被短路了,后面的就不需要进行计算了,n=5。

         m=n=5;
if((m!=5) &(n++==6)){}
System.out.println("b."+n);

    对于上面的这段代码而言,m=n=5,(m!=5)为false,中间的逻辑运算符是&(非短路),(n++==5),后面的仍然需要进行计算,所以后面的n=6,

1      m=n=5;
if((m==5) || (n++==5)){}
System.out.println("c."+n);

    对于上面的代码而言,m=n=5,(m==5)这段代码为true,中间的逻辑运算符为||(短路运算符),后面的代码计算不需要再进行下去了,所以后面的n=5

      m=n=5;
if((m==5) | (n++==6)){}
System.out.println("d."+n);

    对于上面的这段代码,m= n =5,(m==5)为true,但是n++==6这段代码会继续执行,所以n=6。所以答案是5,6,5,6,0

最新文章

  1. Servlet入门
  2. [Shell] swoole_timer_tick 与 crontab 实现定时任务和监控
  3. C#读写文本和连接数据库
  4. JSOUP选择器语法说明
  5. 蓝牙Ibeacon室内定位和微信摇一摇周边原理分析
  6. 一个比较轻巧好用的js分页插件,可ajax可url
  7. POJ 3616 DP
  8. 【POJ3159】Candies 裸的pqspfa模版题
  9. java反射简解
  10. Python第3天
  11. thinkphp5.1 判断是不是post提交
  12. SNF快速开发平台2018-移动端代码生成器已发布
  13. ssh连接服务器失败解决记录
  14. testng.xml 配置大全
  15. error MSB8008: 指定的平台工具集(V120)未安装或无效。
  16. Java 强制类型转换
  17. 005 -- Mysql数据库引擎特点分析
  18. Luogu4551 最长异或路径
  19. Spring Boot学习笔记(五)整合mybatis
  20. 超越icon font

热门文章

  1. windows下ch340 usb转串口芯片的驱动从哪里下载?
  2. HttpServletRequest中getRemoteUser和getUserPrincipal方法
  3. php中应用redis
  4. MySQL 给已存在的数据表 增加字段和注释
  5. C# 跨线程更新 UI
  6. React Native中ref的用法(通过组件的ref属性,来获取真实的组件)
  7. jquery中this与$(this)的用法区别
  8. 刷新页面后,让控制台的js代码继续执行
  9. 【HANA系列】SAP HANA SLT 在表中隐藏字段并传入HANA的方法
  10. Vim常用操作集合