zoukankan      html  css  js  c++  java
  • java知识点复习(1):

    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.以下代码输出结果是:

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

    最后的结果是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?(先面程序运行的结果是多少?)

     1 public class Test5 {
     2     public static void main(String[] args) {
     3         int m = 5 ;
     4         int n = 5 ;
     5         if((m!= 5) && (n++==5)){}
     6         System.out.println("a."+n);
     7 
     8         m=n=5;
     9         if((m!=5) &(n++==6)){}
    10         System.out.println("b."+n);
    11 
    12         m=n=5;
    13         if((m==5) || (n++==5)){}
    14         System.out.println("c."+n);
    15 
    16         m=n=5;
    17         if((m==5) || (n++==6)){}
    18         System.out.println("d."+n);
    19 
    20         int a = 1,b =2 ;
    21         int c = a&b;
    22         System.out.println("a&b"+c);
    23     }
    24 
    25 }

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

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

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

        (3)代码分析:

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

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

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

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

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

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

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

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

  • 相关阅读:
    【乱侃】How do they look them ?
    【softeware】Messy code,some bug of Youdao notebook in EN win7
    【随谈】designing the login page of our project
    【web】Ad in security code, making good use of resource
    SQL数据库内存设置篇
    关系数据库的查询优化策略
    利用SQL未公开的存储过程实现分页
    sql语句总结
    sql中使用cmd命令注销登录用户
    SQLServer 分页存储过程
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/10489008.html
Copyright © 2011-2022 走看看