美文网首页
java面试要点

java面试要点

作者: 一只五彩斑斓的大鹅 | 来源:发表于2019-05-31 09:38 被阅读0次

JAVA

  1. java 中char 类型不存储UTF-8 而是存储UTF-16
    在java中char 占用两个字节 UTF-8 占用1 - 3个字节 使用字符集(Unicode ,ASCII码) 映射正一个整数来存储,因为char中存储的编码格式为utf-16 ,在utf-16编码格式都是占两个字节,在java中打印一个中文的字符占用四个字节,前面两个是字节序 例如

    fun addition_isCorrect() {
      val bytes = "二".toByteArray(charset("UTF-16"))
      println(bytes.size)
      for (aByte in bytes) {
          print(Integer.toHexString(java.lang.Byte.toUnsignedInt(aByte)))
          print(" ")
      }
      println()
    }
    输出结果
      4
      fe ff 4e 8c 
    

    如上代码所示utf-16 占用两个字节, 打印出来确是四个,其中fe ff 代表着字节序
    unicode 是字符集不是编码
    java String的length不是字符数而是char的字节数

  2. java中字符串String最多可以有多长

     栈内存  String longString = "aaaaa.......aaaa"  
     堆内存  byte[] bytes = loadFromFile() new String()读取文件  
     栈内存一般都是编译期能决定大小的放在栈内存中
     堆内存是在项目运行时开辟出来的一块运行内存  
     java 文件编译成class文件是使用utf-8字节 受CONSTANT_UTF8_INFO 的限制最多用  
     65535个字节数,在javac中最多声明65534个字符,看源码得知写的判断是小于65535,  
     源码位置Gen.java constStringLength 要根据实际情况来确定    
     在堆内存中最多占用Integer.MAX_VALUE,但是实际要小于Integer.MAX_VALUE  
     还是要根据实际情况来进行确定      

3.java中匿名内部类的限制

    java中匿名内部类并不是没有名字的,根据反射可以获取到名字为 包名+OuterClass$1 $N   
代表的是匿名内部类的顺序

在kotlin中内部类的基础写法

valueAnimator.addUpdateListener(object :AnimatorUpdateListener {
 override fun onAnimationUpdate(animation: ValueAnimator?) {
     currentPoint = animation?.animatedValue as Point
     postInvalidate()
 }

 })

kotlin 中 lambda表达式的写法

valueAnimator.addUpdateListener { animation ->
 currentPoint = animation?.animatedValue as Point
 postInvalidate()
}

在kotlin中是可以同时实现匿名内部类和实现接口,而在java中是不可以的例如

 val name = object:Foot(),OnClickListener{}

匿名内部类对外部类的引用会造成内存泄漏 例如:

public class Client{
     public void run(){
         InnerClass innerClass = new OutClass().new InnerClass(){
         ...
         }
     }
}


public class OuterClass{
     public abstract class InnerClass{
         
     }
}

此时编译期会自动在内部类中生成一个构造方法

public class Client$1{
     public Client$1(Client client,OuterClass outClass){
         ...
     }
}

相关文章

  • Java面试通关要点汇总集

    Java面试通关要点汇总集 Java面试通关要点汇总集 声明 原著作者-梁老师(梁桂钊) 基础篇 基本功 面向对象...

  • java面试要点

    JAVA java 中char 类型不存储UTF-8 而是存储UTF-16在java中char 占用两个字节 UT...

  • Java面试通关要点

    本文摘自公众号【服务端思维】,如有兴趣敬请关注「服务端思维」微信公众号,获取最新文章。 基础篇 基本功 1、面向对...

  • Java笔记

    Java基础 Java面试通关要点 1.面向对象的特征 封装 继承 多态 封装继承多态 2.final,final...

  • Java面试要点汇总集

    基础篇 基本功 面向对象的特征 final, finally, finalize 的区别 int 和 Intege...

  • java面试终极篇

    年前,我整理的 Java面试通关要点汇总集 获得了很多读者的肯定,谢谢大家支持。事实上,笔者结合自己过往的面试经验...

  • Java面试要点总结基础篇:基本功

    前言:这几天看到了梁大发的一篇文章,了解到了很多关于面试方面的知识,详细参考:Java面试通过要点汇总,然后觉得自...

  • Java面试通关要点汇总集

    框架篇 Spring BeanFactory 和 ApplicationContext 有什么区别 Spring ...

  • Java面试通关要点汇总集

    基础篇 基本功 面向对象的特征 final, finally, finalize 的区别 int 和 Intege...

  • Java面试通关要点汇总集

    基础篇 基本功 面向对象的特征 final, finally, finalize 的区别 int 和 Intege...

网友评论

      本文标题:java面试要点

      本文链接:https://www.haomeiwen.com/subject/vknitctx.html