• Java 基础知识(二)


    1. << 和 >>

    <<: 2<<3 ,2的三次方

    >>: 2>>3,   2的 1/3次方

    2.string类是否可以被继承

    不可以   被final修饰:线程安全;支持字符串常量池数据共享,节省资源,提高效率(将常量放入常量池,如果存在则直接取出,否则创建放入)

    3.Java 操作字符串的类

    1)String  :  字符串不可变;可用concat(),+,join()拼接;每一次操作都会产生新的字符串

    2)StringBuffer: 字符串可变;可用append()拼接;线程安全

    3)StringBuilder: 字符串可变;可用append()拼接;线程不安全

    4. String s="i" 和String a=new String("i")是否一样

       前者 往常量池放入"i",引用指向常量池

       后者  两个对象,一个在常量池,一个用new创建在堆上的对象

    5.如何将字符串反转

    1)递归法

     public static String reverse1(String str) {
            int length=str.length();
            if(length<=1){
                return  str;
            }
            String left=str.substring(0,length/2);
            String right=str.substring(length/2,length);
            return reverse1(right)+reverse1(left);
        }

    2)利用 .charAt(i) 字符串拼接

    public static String reverse2(String str){
            int length=str.length();
            String reverse="";
            for (int i=0;i<length;i++){
                reverse=str.charAt(i)+reverse;
            }
            return reverse;
        }

    3)StringBuffer 中的reverse()

    public static String reverse3(String str){
            return new StringBuffer(str).reverse().toString();
        }

    4)toCharArray() 首位反转

    public static String reverse4(String str){
            char[] s=str.toCharArray();
            int n=s.length-1;
            for (int i=0;i<n/2;i++){
                char t=s[i];
                s[i]=s[n-i];
                s[n-i]=t;
            }
            return new String(s);
        }

    5)toCharArray()  拼接

    public static String reverse4(String str){
            char[] s=str.toCharArray();
            String reverse="";for (int i=0;i<length;i++){
                reverse=s[i]+reverse;
            }
            return reverse;
        }

    6.将 GB2312 编码的字符串转换为 ISO-8859-1 编码的字符串?

    String s1 = "你好";
    String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1");
    //将 GB2312 编码的字符串转换为 ISO-8859-1 编码
    

    7.两个对象值相同(x.equals(y)==true),但却可有不同的 hashcode,对吗?

       不对  如果两个对象 x 和 y 满足 x.equals(y) == true,它们的哈希码(hash code)应当相同。

      Java 对于 eqauls 方法和hashCode 方法是这样规定的:

            1)如果两个对象相同(equals 方法返回 true),那么它们的 hashCode 值一定要相同;

            2) 如果两个对象的 hashCode 相同,它们并不一定相同。

    8.数组中类存如何分配
       数组使用前必须初始化
       1)静态初始化:指定数组元素初始值,系统决定其长度;
       2)动态初始化:指定数组长度,系统分配初始值;
       注意:数组系统初始值指定为null;int型指定为0
    9.面向对象的特征
      继承、封装、多态
    10.Overload和Override
      1)重载(overload):编译时的多态;同一个类中,方法名相同,但参数个数或类型不同
      2)重写(override):运行时的多态;子类与父类(接口实现),子类被重写的方法与父类中同样方法的返回类型一致
         
  • 相关阅读:
    多线程
    Java I/O简述
    Java集合
    Java常用类
    Java面向对象基础知识汇总
    Java标识符和关键字
    认识Java
    mvn打包源码和生成javadoc
    Http协议概述
    exe可执行程序及堆栈分配(转载)
  • 原文地址:https://www.cnblogs.com/dxjx/p/12447526.html
Copyright © 2020-2023  润新知