zoukankan      html  css  js  c++  java
  • java基础--自我总结

    1.带小数点数字默认为double类型,double范围比float大,为了不损失精度,double类型不会自动转换成float类型:

      例:float f = 1.0f      //必须这么写

    2.所有的Exceptions都继承自Throwable.

    3.java标识符:以字母开头的字母数字序列,

        字母 -- 大小写英文字母、下划线(_)、美元符($),也可可以是Unicode字符集里的符,如:汉字等;

        数字 -- 0~9。

        其中,不能包含+、-及关键字。

    4.java中instance variable、class variable和local variable区别:

      (1)static variable也成class variable,属于类所有,它也是多线程编程时产生问题的主要来源;

      (2)non-static variable 称为 instance variable,实例变量;

      (3)local variable,局部变量,只在某个域中有效;

      static variable 与 instance variable 区别:

        (1)instance variable在对象被创建时初始化,假如有5个对象,那5个对象中该instance variable可以有不同的值。

        (2)static variable在类被第一次加载到jvm中时初始化,像c中的global variable,被所有instance共享,因此在multi-thread编程时要特别注意线程安全问题。

      instance variable 与 local variable 区别:

        (1)local variable只在scope中可见,在scope外不可见,不可被访问,scope由{ }界定。

        (2)instance variable根据其access modifier可被不同的代码访问,public 的可以被在任意处的instance访问,protected可被subclass访问,private 只能在自身中被访问。

         access modifier 不能用于local variable,也不能使用static,但可以使用final,对于匿名内部类来说,只能使用final local variable。

     5.JavaScript对象获取属性值的方法:

      (1)objectName.propertyName

      (2)objectName("propertyName")

      (3)objectName["propertyName"]

    6.final关键字(用于成员变量、本地变量、方法以及类)

      (1)final变量:凡是成员变量或者本地变量(方法中变量或代码块中的变量)声明为final都叫final变量,经常和static关键字一块使用,用作常量。如果是基本数据类型的变量,一旦被初始化就不会改变;如果是引用类型的变量,则对其初始化后便不再指向另一对象。

      (2)final方法:不能被子类的方法重写,比非final方法快,编译的时候就静态绑定了,不需要运行时再动态绑定。private会隐式的被指定为final方法。

      (3)final类:不能被继承,java中String和Integer以及其他包装类。

      (4)final关键字的好处:

        **$**:提高了性能,JVM和java应用都会缓存final变量;

        **$**:final变量可以安全的多线程环境下进行共享,而不需要额外的开销;

        **$**:使用final关键字,JVM会对方法、变量及类进行优化。

        PS:如果final变量是基本数据类型及String类型时,如果编译期就知道它的值,编译期会将它当成编译期常量使用。

        PS:final参数 -- java采用的是值传递,对于基本数据类型,直接相当于将变量进行拷贝,即使没有final修饰,方法内的变量改变也不会影响方法外的变量;对于引用变量,传递的引用的值,让实参和形参指向同一个队形,即使形参指向另外一个对象,也不会影响实参。

      例:final StringBuffer sb = new StringBuffer("abc");   //fianl修饰的引用对象

        sb.append("def");   //使用append修改值,没有差生新的对象,不会报错

        sb = new StringBuffer("def");    //产生新的对象,会报错

    7.switch-case用法及注意事项

      (1)switch(A),jdk1.7之前A只能是数值类型,如byte、short、char、int及枚举等,不能是long和String;jdk1.7后A可以是String。

      (2)case后面必须跟常量;

    8.接口、类、属性、方法各有哪些修饰符

      (1)接口的修饰符:public、abstract。(默认情况下接口是public abstract)

      (2)类的修饰符:public、abstract、final、类缺省访问控制符

      (3)属性的修饰符:4中可访问控制符(public、default、protected和private)、final、static、volatile和transient

      (4)方法的修饰符:4中可访问控制符(public、default、protected和private)、final、static、synchronized、abstract、native(本地方法控制符)

     9.内部类(一般只为外围类使用)

      (1)普通内部类对象隐式的保存了一个引用,指向创建它的外围类对象;

      (2)不能从嵌套类的对象中访问非静态的外围类对象 ;

      (3)内部类可以继承某个接口,无论外围类有没有继承;

    10.String、StringBuffer和StringBuilder的区别

      (1)String使用字符数据保存字符串,private final char value[],因为有final修饰,所以String对象是不可变的;

      (2)StringBuffer和StringBuilder都是继承自AbstractStringBuilder类,在该类中也使用字符数据保存字符串,char[],所以这两个类的对象是可变的。

      (3)String对象是不可变的,也可理解成常量,所以是线程安全的;StringBuffer对调用的方法加了同步锁,所以也是线程安全的;StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。

    11.字面值常量:如1988、3.45、true/false等;

    12.局部变量和局部内部类不能用public、protected、private和static修饰。

      成员内部类可以用权限修饰符修饰(public、protected、private和缺省修饰符)

    13.字符串截取

      (1)java虚拟机采用Unicode16(UCS2)编码,所有字符在内存中都是2个字节,对于英文字符,其实占一个字节,高位是补位的,中文字符占两个字节。

      (2)String str = "fjajf汉字fldajlf汉字";   byte[] bytes = str.getBytes("Unicode");   bytes前两个是标志位:bytes[0] = -2; bytes[1] = -1;

    14.java Date、String、Long三种日期类型之间的相互转换

      (1)  //String转化成Date

           SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");

           Date date = simpleDateFormat .parse("20180124153000");

           //Date转化成long

           long shijian = date.getTime();

           //long转化成Date

           Date date = new Date(123456L);

           //Date转化成String

           String str = simpleDateFormat.format(date);

  • 相关阅读:
    tensorflow 2.0 学习 (十) 拟合与过拟合问题
    tensorflow 2.0 学习 (九) tensorboard可视化功能认识
    tensorflow 2.0 学习 (八) keras模块的认识
    tensorflow 2.0 学习 (七) 反向传播代码逐步实现
    tensorflow 2.0 学习 (六) Himmelblua函数求极值
    tensorflow 2.0 学习 (五)MPG全连接网络训练与测试
    arp协议简单介绍
    Pthread spinlock自旋锁
    线程和进程状态
    内核态(内核空间)和用户态(用户空间)的区别和联系·
  • 原文地址:https://www.cnblogs.com/lmmblogs/p/7715671.html
Copyright © 2011-2022 走看看