• java中易错点


    1、A instanceof  B{这是没有好好利用java多态的表现}

      java中的二元操作符,测试A对象是否是B类的实例;

      返回值:boolean类型

    2、“==”与 “equals”的区别:

      ==:是比较两个变量的值,并不涉及两个对象内容的比较;

      equals:比较两个对象的内容是否相同,实质比较的是:指向对象所在的内存地址;

      

    package fdx.com.oneproblem;
    
    public class OneTest {
    	public static void main(String[] args){
    		//==、equals的区别:
    		String str = new String("123");
    		String b = new String("123");
    		if(str == b){
    			System.out.println("==:"+true);
    		}else {
    			System.out.println("==:"+false);
    		}
    		if(str.equals(b)){
    			System.out.print("equals:"+true);
    		}else {
    			System.out.println("equals:"+false);
    		}
    	}
    }
    

     得到的结果:

    ==:false
    equals:true
    

    3、final关键字【修饰符】

      使得修饰的变量“不变”,当用来修饰对象时,就会是对象的引用不变,{引用本身不变、引用指向的对象不变}

     4、声明了什么?

      String str = "Hello World";

      描述:声明了一个String类型的对象引用变量str,内容是“Hello World”;而不是简单的描述:为声明了一个对象

    5、str所指向的对象是否改变了呢?

      比如:String str = “Hello”;

         str = str + "World";

       描述:str原先指向一个String对象,内容是"Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,str不指向原来那个对象了,而指向了另一个String对象,内容为"Hello world",原来那个对象还存在于内存之中,只是str这个引用变量不再指向它(Hello)了;

      这样子的话会出现这样子的问题结论:【使用String来表示时不时发生变化的字符串的话,会造成内存的开销】如果经常对字符串进行各种各样的修改,或不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为String对象建立之后不能再改变,所以对于每一个不同的字符串,都需要一个String对象来表示。

      如果遇到随时会变的字符串,那么需要使用StringBuffer来声明字符串,因为StringBuffer允许修改,而且不是每个不同的字符串都要生成一个新的对象。

  • 相关阅读:
    StackStorm简介及其部署
    Nginx系列(十二)——性能调整
    Nginx系列(十一)——通过日志进行故障排查
    Nginx系列(十)——可用性监控进阶
    Nginx系列(九)——容器/微服务
    Nginx系列(八)——数字媒体流
    Nginx系列(七)——HTTP/2
    Nginx系列(六)——安全控制
    Nginx系列(五)——认证
    Nginx系列(四)——配置文件自动化管理
  • 原文地址:https://www.cnblogs.com/FanSunny/p/5564095.html
Copyright © 2020-2023  润新知