• java易混淆知识小结


    1.java的基本数据类型,及所占字节和范围

    byte:  字节型,占1个字节,8位,范围是   -2^7 ~   2^7-1

    short:短整型,占2个字节,16位,范围是 -2^15 ~ 2^15 -1

    int: 整形,占4个字节,32位,范围是-2^31 ~ 2^31 -1

    long: 长整型 ,占8个字节,64位,范围是 -2^63  ~  2^63-1

    float: 单精度浮点型,占4个字节,32位,不能表示精确的值。变量值后边必须加F或f,否则会编译不通过

    double:双精度浮点型,是浮点数的默认类型。占8个字节,64位,也不能表示精确的值

    boolean:布尔型,占1个字节,8位

    char:字符型,占2个字节,16位,范围为(0~65535)

     2.数组的定义及相关操作

    public static void main(String[] args) {
            //正确的定义
            int[] arr = {1,2,2,4,5,6};
            int arr1[] = {1,2,3,4};  //不推荐
            int[] arr2 = new int[] {1,2,3};  
            int[] arr3;
            arr3 = new int[] {1,2,3};
            int[] arr4 = new int[3];
            //数组的复制
            System.arraycopy(arr1, 0, arr4, 0, 3);
            System.out.println(arr4[2]);
            int[] arr5 = Arrays.copyOf(arr, 3); //推荐使用这种方法,能对数组进行扩容
            //数组排序。默认为升序
            Arrays.sort(arr);
            //二分法查询某个元素是否在数组中,存在返回元素的索引,不在则返回一个负数的插入点
            int binarySearch = Arrays.binarySearch(arr, 10);
            System.out.println(binarySearch);
            //多维数组
            int[][] mrr = new int[2][3]; // 2指包含了2个一维数组,3指每个一维数组包含3个元素
            
        }

     3.java中内存分配

    栈:存储正在调用方法中的所有局部变量(包括参数),

      调用方法时,在栈中为该方法分配一块对应的栈帧,栈帧中存储方法中所有的局部变量(包括参数),方法调用完成后,栈帧被清除,局部变量一并消失

    堆:存储所有new出来的对象(包括成员变量)

    方法区:存储.class字节码文件(包括方法),方法只有一份,通过this来区分具体的对象

    常量池: 常量池是方法区的一部分,主要用来存放常量和类中的符号引用等信息。

    4.java中各种变量的生命周期

    成员变量:创建对象时存在堆中,对象被回收时一并消失

    局部变量:调用方法中存在栈帧中,方法调用结束时与栈帧一并消失

    静态变量:类首次被加载时静态变量被分配空间,程序结束后由系统释放.

    5.Web项目中几种设置编码作用 

     

     a. 设置JSP编译成Servlet时使用的编码: pageEncoding=”UTF-8”

      b. 指定服务器响应给浏览器的编码: 

        1>response.setContentType("text/html;charset=UTF-8")

        2>response.setCharacterEncoding("UTF-8");

      c. 对请求参数的编码设置:

        post请求时:request.setCharacterEncoding(“UTF-8”);  必须放在所有的getParams()前面

        get请求时:1>修改tomcat的server.xml中的 URIEncoding属性 

               2>str = new String(str.getBytes("iso-8859-1"),"utf-8");

    6.二进制

    ①二进制最高位代表符号,0代表+号,1代表-号

    ②计算机由于不能进行减法,所以引入了反码和补码来处理,并约定如下:

         a.正数的原码、反码和补码都相等

         b.负数的补码等于反码+1

         c.反码概念为:原码的每一位变成相反的,0变成1,1变成0

    ③十进制转二进制规律,依次除以2,获取所有的余数,倒序排列

    ④二进制转十进制规律:如下

     用每位数是1的位数作为2的幂数并相加,位数下标从0开始

    提示:计算机的底层都是用补码的方式进行数据的存储哟!

    7.a++和++a的区别

    ++a:是先运算,然后取值

    a++:是先取值,后运算

    如下:

    int a = 2;
    int b = ++a;
    int c =2;
    int d = c++;
    System.out.println(a+" "+b+" "+c+" "+d); // 3 3 3 2

    8.算术运算符的注意问题    

    ①对负数取模,可以不用管负号,被模数是负数,则需要保留负号,取模的结果也不一定都是整数哟
      System.out.println(5 % -3);  // 2
      System.out.println(-5 % 3); // -2
      System.out.println(5.3 % 3); // 2.3
    ②对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分
       int x=3510;
      x=x/1000*1000; 先算/再算*
      System.out.println(x); // 3000

     9.肯爹的运算案例

    第一题:
    int n = 10;
    n += (n++) + (++n);
    System.out.println(n); //32

    第二题:
    int a=10;
    int varNum=66;
    varNum=varNum++;
    System.out.println(varNum); // 66 解析链接:https://zhuanlan.zhihu.com/p/40645506

    第三题
    int a = ~6;
    System.out.println(a); //-7 解析链接:https://zhidao.baidu.com/question/712365292462024645.html

     10.^运算符:异或,相同为false,不同为true

     11.位运算相关内容

     

          

  • 相关阅读:
    解读AppIcon图标设置置信息和App内存警告临界值
    我在外包公司做增删改查有前途么?
    浅议Grpc传输机制和WCF中的回调机制的代码迁移
    2019.NET Conf China(中国.NET开发者峰会)活动全纪录:.NET技术之崛起,已势不可挡
    一位年轻而优秀的.NET开发者的成长点滴
    领域驱动设计-让程序员心中有码(九)
    2019.NET Conf,我们在共同期待
    码农的技术小世界
    .NET Core使用gRPC打造服务间通信基础设施
    坚持写了一年的博客,我有哪些收获
  • 原文地址:https://www.cnblogs.com/zblwyj/p/10715411.html
Copyright © 2020-2023  润新知