Java 学习笔记

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 学习笔记相关的知识,希望对你有一定的参考价值。

进制相关

十六进制

  • 十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。
  • 0xf表示十进制数15
    在java中以0x开头的数表示十六进制数(如0x1, 0xa), 其中以字母a~ f 表示10~15的数字

十进制转十六进制

采余数定理分解,例如将487710转成十六进制:
4877÷16=304…13(D)
304÷16=19…0
19÷16=1…3
1÷16=0…1
这样就计算出4877(10)= 130D(16)

负数转十六进制

  • 负数用十六进制表示,通常用的是补码的方式表示.
  • 正数的补是它本身;负数的补码是它本身的值每位求反,最后再加一。

例如: 求-3的十六进制
3的十六进制为0003,3求反之后是C,再加1,成D,所以-3的十六进制就是:FFFD

八进制

在java中以0开头的数表示进制数(如012,03),没有前缀的数才表示十进制数(如123,4)

二进制

  • 无符号右移:忽略符号位,空位都以0补齐。value >>> a,a是要移位值 value 移动的位数。无符号右移的规则只记住一点:忽略了符号位扩展,0补最高位  无符号右移运算符>>> 只是对32位和64位的值有意义。右移补零操作符>>>,无论正负,都在高位插入0。
  • 有符号右移: 右移位运算符>>,若操作的值为正,则在高位插入0;若值为负,则在高位插入1。
  • 负整数转换成二进制
    方法:先是将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一。还以42为例,负整数就是-42,如图4所示为方法解释。最后即为:(-42)10 =(11010110)

快捷使用

  • new int[] {} : 直接创建出来数组
  • 快速输入
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String tokens[] = s.readLine().split(" "); // 读取一行,分割
    int n = Integer.parseInt(tokens[0]);
    int m = Integer.parseInt(tokens[1]);
  • // 数组快速初始化
    final int oo = 1000000;
    Arrays.fill(dist, oo);
  • // 重写比较器
    class Inflection implements Comparable {
    &emsp**;public int compareTo**(Object o) {
       Inflection c = (Inflection)o ;
       if (a < c.a)
       return -1 ;
       if (a > c.a)
       return 1 ;
       return 0 ;
       }
    }

基本概念

Vector

  • Vector类实现了可扩展的对象数组。 像数组一样,它包含可以使用整数索引访问的组件。 但是, Vector的大小可以根据需要增长或缩小,以适应在创建Vector之后添加和删除项目。默认容量10。

final

  • final修饰基本数据类型,一旦初始化比便不能改变,final修饰的引用类型,初始化后不能指向其他对象,但该对象的内容可以改变
  • final修饰一个成员变量,必须初始化,一种在声明变量是初始化,另一种声明变量后,在构造方法中初始化
    但函数声明为final类型,说明参数是只读类型,不能对参数值进行修改
  • final修饰的成员变量表示常量,只能赋值一次,赋值后不再改变

Character

  • Character.toLowerCase(letter) 将字符变为小写
  • Character.isLetterOrDigit(ch)

Map

  • 遍历map:
    for (Map.Entry<Integer, Integer> x : map.entrySet()) {
    times.add(x.getValue());
    }
    map.enterSet() 返回对象是Map.Entry<Integer, Integer>

equals与==的比较

一个比较基本数据类型,一个是比较引用数据类型
双等号在比较引用类型的时候主要是比较地址。

当双等号比较的是基本数据类型的时候,比较的数据的值。

equals方法在比较引用类型的时候就是纯粹的再比较值。

equals源码:

//我们知道在Java中,所有的类都是直接或者间接的继承Object类,所以这里传入一个Object类型会比较方便一些
public boolean equals(Object anObject) {
//就是说让s1和s2进行双等号比较,如何二者内存地址相同的话,就会跳出并返回true,如果地址不同,会执行下一个if判断
   if (this == anObject) {
        return true;
    }
    //instanceof是对传入值的类型的一个判断,即s2若是String类型的话,返回true,继续执行下面代码,如果不是,跳出返回false
    if (anObject instanceof String) {
    //把s2转化为String类型
        String anotherString = (String)anObject;
        //这里省略了this,n指的是s1的长度
        int n = value.length;
        //判断s1和s2的长度是否相同
        if (n == anotherString.value.length) {
        //把s1拆分一下,并且把拆分的结果放到v1这个字符数组里,即['m','e','n','g']
            char v1[] = value;
            //同理,把s2拆分放到数组v2里
            char v2[] = anotherString.value;
            int i = 0;
            //将两个数组的值进行比较,如果有一个不同,则返回false
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

以上是关于Java 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

JSP 学习笔记

JSP学习笔记:JSP语法和指令

java SpringRetry学习的代码片段

LensKit<开源推荐系统框架Java;学习笔记

DOM探索之基础详解——学习笔记

学习笔记 链接