牛客网刷题-java

2023-10-29

大部分解答为牛客网各位同学的精彩回答,本文只是选择一些互联网常考题目记录备忘

1.一个类的构造器可以调用这个类中的其他构造器:

        this的作用其中一个就是在一个构造方法中调用另一个构造方法,格式为this(参数);如 this(x)

        super是调用父类的方法;

        A(a)这种形式是在new一个类时使用。

        子类的构造方法总是先调用父类的构造方法,如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类不带参数的构造方法。
        而父类没有无参的构造函数,所以子类需要在自己的构造函数中显式的调用父类的构造函数。用super,不然编译报错。

2.类的初始化顺序:

    类的初始化顺序是:

        1、初始化父类中的静态成员变量和静态代码块。

        2、初始化子类中的静态成员变量和静态代码块。

        3、初始化父类中的普通成员变量和代码块,在执行父类中的构造方法。

        4、初始化子类中的普通成员变量和代码块,在执行子类中的构造方法。

        执行顺序优先级:静态块>main()>构造块>构造方法

        静态块:用static申明,JVM加载类时执行,仅执行一次,静态块按声明顺序执行

        构造块:只用{}括起来的代码,是独立的,必须依附载体才能运行,new时在构造方法前调用,为减少代码量

    

    

    

    静态块间按声明顺序执行,静态块只执行一次。先执行B t1的声明,调用构造块再调用默认的构造方法。因为执行了静态变量t1的初始化,意味着已经加载了B的静态域的一部分,这时候不能再加载另一个静态域了(好奇的那个静态块),否则属于重复加载了。这样两个静态变量调用了两次构造块,接着调用静态块。再进入主函数B t调用构造块和默认的构造方法。

3.类方法调用:

    在类方法中调用本类的类方法可直接调用。 实例方法也叫做对象方法。

    类方法是属于整个类的,而实例方法是属于类的某个对象的。

    由于类方法是属于整个类的,并不属于类的哪个对象,所以类方法的方法体中不能有与类的对象有关的内容。即类方法体有如下限制:

        (1) 类方法中不能引用对象变量;

        (2) 类方法中不能调用直接调用类的对象方法;

        (3) 在类方法中不能使用super、this关键字。

        (4) 类方法不能被覆盖。

    如果违反这些限制,就会导致程序编译错误。与类方法相比,对象方法几乎没有什么限制:

        (1) 对象方法中可以引用对象变量,也可以引用类变量;

        (2) 对象方法中可以调用类方法;

        (3) 对象方法中可以使用super、this关键字。

4. 

            i++是先取值再加,所以第一个括号里表达式值为5,出了括号后i的值为6

          ++i 是先加再取值,所以第二个括号里表达式的值相当于6+1之后取值为7,出了括号后i的值为7

           i--是先取值再减,所以第三个括号里表达式值为7,出了括号后i的值为6

           --i是先减再取值,所以第四个括号里表达式的值相当于6-1之后取值为5,出了括号后i的值为5

           综上s=5+7+7+5=24

5.Java中对于文本文件和二进制文件,都可以当作二进制文件进行操作。

6.

            

     答案:由于String s没有初始化,代码不能编译通过。
     解析:成员变量有初始值,没有赋值也有对应属性的默认值,而局部变量没有初始值的
 

7.子类能继承父类的所有成员:

    子类从其父类继承所有成员(字段,方法和嵌套类)。 构造函数不是成员所以它们不被子类继承,但是可以从子类调用超类的构造函数。

    继承具有传递性

    

    1,2,3行声明全都是正确的

8.

    

9.对于外部类来说,只有两种修饰,public和默认(default),因为外部类放在包中,只有两种可能,包可见和包不可见。

     对于内部类来说,可以有所有的修饰,因为内部类放在外部类中,与成员变量的地位一致,所以有四种可能。

    静态内部类可以访问外围类的静态数据,包括私有数据,但不能访问非静态数据;

    非静态内部类可以直接访问外围类的数据,包括私有数据

10.接口关系:

    

11.java加载器:

    

12.

    

    

13.成员变量是放在堆上的,局部变量是放在栈上的

14.

    

    接口方法默认是public abstract的,且实现该接口的类中对应的方法的可见性不能小于接口方法的可见性,因此也只能是public的

     答案为 public void fly(){...}

     随着JDK发展、访问权限发生了变化,详见25

15.静态变量只能在类主体中定义,不能在方法中定义

16.

    

    答案:Result=150 Result=150

    针对非静态方法不论向上或者向下转型,都是一句话,“编译看左边,运行看右边”。也就是编译时候,会看左边引用类型是否能正确编译通过,运行的时候是调用右边的对象的方法。但是对于成员变量,都是看左

    

17.

    

    答案:false ,false ,true

    

18.子类方法重写父类方法遵循“两同两小一大”的规则:

    

19.

    

20.

    

        答案:///MyClass.class

        解析;由于replaceAll方法的第一个参数是一个正则表达式,而"."在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成"/"。如果想替换的只是".",那么久要写成"\\.".

21.

    

22.集合对象中哪几个是线程安全的:

    

    类中有哪些是线程安全的:

        StringBuffer

        Properties,因为其继承了HashTable

23.

    

        答案:func1、func4

        解析:数据类型转换问题。由大到小需要强制转换,由小到大不需要。

        其中long转为float特别,long转float不需要强制转换,float表示的范围比long大

        

24.hashcode与equals的约定关系:

    (1)如果两个对象相等,那他们一定有相同的哈希值

    (2)如果两个对象的哈希值相等,那这两个对象可能相等可能不等,需要再通过equals来判断

25.接口、抽象类中的方法默认访问权限:

    

    含有abstract修饰符的class即为抽象类abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。  

    接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final

    总结:下面比较一下两者的语法区别:  
    1.抽象类可以有构造方法,接口中不能有构造方法。  
    2.抽象类中可以有普通成员变量,接口中没有普通成员变量 ,默认是用public final static 修饰的静态常量
    3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。  
    4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然 eclipse下不报错,但应该也不行),但接口中  的抽象方法只能是public类型的,并且默认即为public abstract类型。  
    5. 抽象类中可以包含静态方法,接口中不能包含静态方法  
    6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是            public static final类型,并且默认即为public static final类型。  
    7. 一个类可以实现多个接口,但只能继承一个抽象类。  

    另外:

        抽象类可以声明一个引用指向子类,如A是抽象父类,B是子类。A含有一个静态方法get返回一个B的实例,则A  a=A.get()可行(常见用法),也可A  b=new B()

        常见new一个接口其实是使用了匿名类,匿名类实现了new 的那个接口,所以之后还有写方法体实现接口中的方法

26.Runnable r=new Runnable(){ 

        public void run(){

            ...

        }

    }

    解析:这只会出现在一个类的内部,接口不能实例化,这是匿名内部类的语法和用法。表示一个实现了Runnable的新类的一个对象。匿名内部类可以不声明显示的对象而直接实例化抽象方法或接口。

27.Java程序种类:Applet、Application、Servlet

28.Java标识符:

    Java标识符由数字、字母、下划线(_)、美元符号($)或人民币(¥)组成,首位不能是数字。并且Java关键字不能作为标识符

29.java中数据类型分类:注意区分原生类型和引用类型

    

30.运行时异常:

    

31.JVM内存参数:

    

    

32.TCP建立过程及相关函数调用:

    

33.JRE判断程序是否执行结束的标准是:所有的前台进程执行完毕

    

34.

    

    答案:编译通过并输出结果false

    解析:类中声明的变量有默认初始值,方法中声明的变量没有默认初始值,必须在定义时初始化

35.

    

    答案:编译错误

    解析:

    

36.

    

    答案:O(n^2)

    解析:

    

37.

    

    

    解析:

    

38.

    

   

    解析:Test test=null;这里也会加载静态方法,所以test数据中包含Test类的静态初始化数据,但是test并不能调用该类的非静态数据(运行是A,争议较大的答案中感觉最合理的,实在不行记着这种情况)

39.

    

    答案:

        

    解析:

        java虚拟机中类加载分为5个阶段,加载,验证,准备,解析,初始化,准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,即给变量赋默认的初始值,count1,count2准备阶段之后,值为1;初始化阶段才会执行所有类变量的赋值动作和静态语句块。

        

    如果将 private static Singleton obj = new Singleton();放置到public static int counter2 = 0;后面则:

40.一个类中实例方法可以直接使用该类中其他实例方法,即使是private

        

41.    

    数值与包装类进行==比较:如Integer 与int,Long与long进行==比较时,会自动拆箱;不同类型之间进行比较,如果有一方为非包装类,则会自动拆箱。如果两方都为包装类,则不会拆箱,且不能比较,编译会报错

    两个Integer类型进行“==”比较, 如果其值在-128至127  ,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关

    Integer和new Integer : new Integer会创建对象,存储在堆中。而Integer在[-128,127]中,从缓存中取,否则会new Integer. 
所以 Integer和new Integer 进行==比较的话,肯定为false ; Integer和new Integer 进行equals比较的话,肯定为true

    new Integer和new Integer进行==比较的时候肯定为false ; 进行equals比较的时候,肯定为true。原因是new的时候,会在堆中创建对象,分配的地址不同,==比较的是内存地址,所以肯定不同

    两个包装类进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true。

   包装类类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行3中的比较。 

   包装类的“==”运算在不遇到算术运算的情况下不会自动拆箱

   包装类的equals()方法不处理数据转型

42.说明输出结果

    

    

    TestSuper和Date的getClass都没有重写,他们都是调用Object的getClass,而Object的getClass作用是返回的是运行时的类的名字。这个运行时的类就是当前类,所以

     在调用getName()方法而getName()是:包名+类名

43.在java7中,下列不能做switch()的参数类型是:

    switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型String类型是java7开始支持。 

44.  true,false,null不是关键字。而是常量

45.“System.out.println()”来输出信息,语句中的System、out、println分别是什么?

    System是java.lang中的一个类,out是System内的一个成员变量,这个变量是一个java.io.PrintStream类的对象,println()是java.io.PrintStream类的方法

46. what is the result of the following code?

    

    

    

47.hashMap跟hashTable的区别:

    HashMap和HashTable都实现了Map接口

    HashMap是非synchronized,而HashTable是synchronized的

    HashMap使用iterator。HashTable使用了iterator,由于历史原因还使用了Enumeration

    HashMap重新计算hash值,而且用与代替取模。HashTable直接使用对象的hashcode

48.以下代码执行的结果是多少?

    

    输出结果:

    

    (1)首先静态方法,不存在重写,重写只对可见的实例方法有效。静态方法只有隐藏。所以子类的sub中并没有重写父类的方法

    (2)重载是根据形参的静态类型确定调用的方法版本,重写是根据调用者在运行期的实际类型来确定调用的方法版本。既然getType不是重写那就是两个不同的静态方法。依据编译看左运行看右知道subToSuper是Super类所以调用Super类的方法

     语言类的分派一共四种,静态单分派,静态多分派,动态单分派,动态多分派,而 Java 是一种静态多分派动态单分派语言

     java的多态有两种,一种基于重载的静态分派,一种是基于重写的动态分派。其中静态方法,私有方法,构造方法,父类方法,final方法称为非虚方法,其他为虚方法。多态的机制是建立在虚方法的基础上。这句话说明了两点:1.多态的行为只作用在方法上     2.static、final、private修饰的方法以及构造方法不存在多态的行为。申明是哪个类的就调用哪个类的

    

    普通方法,运用的是动态单分配,是根据new的类型确定对象,从而确定调用的方法;

    静态方法,运用的是静态多分派,即根据静态类型确定对象(声明的类型),因此不是根据new的类型确定调用的方法

49.java运算符优先级:

    单目算数位关系,逻辑三目后赋值

    单目:单目运算符+ –(负数) ++ -- 等 
    算数:算数单目运算符* / % + - 
    位:位移单目运算符<< >> 
    关系:关系单目运算符> < >= <= == != 
    逻辑:逻辑单目运算符&& || & | ^ 
    三目:三目单目运算符A > B ? X : Y 
    后:无意义,仅仅为了凑字数 
    赋值:赋值=

50.正确的数组声明语句:

    

    数组命名时名称与[]可以随意排列

    声明的二维数组中第一个中括号(行数)中必须要有值,它代表的是在该二维数组中有多少个一维数组

51.JDK1.8 的 ConcurrentHashMap 采用CAS+Synchronized保证线程安全。 JDK1.7 及以前采用segment的分段锁机制实现线程安全,其中segment继承自ReentrantLock,因此采用Lock锁来保证线程安全。

    Arrays.asList()  返回  java.util.Arrays.ArrayList 对象,这里的 ArrayList 是 Arrays 私有的内部类。并非java.util.ArrayList类。

    SimpleDateFormat是线程不安全的

52.静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据

    

53.

    

    答案输出false

    首先==优先级比?:高,所以变为b = true?false:true?false:true,为true所以返回false

54.Consider the following code:

    String s=null;

    Which code fragments cause an object of type NullPointerException to be thrown?

    

    解析:String为引用类型,如果对象为null,也就是说这个对象都不存在了,再去调用对象的相关方法,肯定会报空指针异常。这里调用了String类的length()方法。&&和||具有短路的效果,在进行&&时,如果&&前的是false,那么&&后的不再执行,直接返回false,同理||也一样。所以BD的s.length()不会被执行,AC会抛出空指针异常.

55.

    

    输出:22 34 17

    解析:https://blog.csdn.net/zhumintao/article/details/53818972

    几个点要注意:子类继承父类,调用方法时先调用子类中的方法,如果没有就调用父类中的方法

    一旦try{ }中返回了某一个值,如果finally有返回值,finally中的返回值会覆盖try的返回值,如果finally没有返回值,就是try中的返回值。

56.接口  对象名=new  接口实现类;和 类  对象名=new  对象类;的区别

    这是多态的一种基本应用,实践于对修改关闭,对扩展开放。

    接口不能实例化,用接口的实现类可以实例化,将实现类的对象在内存中的地址指向接口,这个接口就可以使用了

    接口  对象名体现了多态,应该优先使用接口而不是类来引用对象,但只有存在适当的接口类型时

    使用接口类去引用对象是有前提条件的——即实现类中全是接口类的方法的实现,没有自己单独的方法。当实现类存在自己的方法时,使用实现类来声明变量。

    因为以接口声明的对象只能调用接口中声明的方法,而不能调用类中特有的方法,除非使用时明确转型

    https://blog.csdn.net/u011212549/article/details/52048790

    https://m.imooc.com/qadetail/200041

    https://blog.csdn.net/summerxiachen/article/details/79733800

    面向接口编程的好处:

        (1)方便维护与扩展,遵守开闭原则

        (2)分离设计与实现,使得系统可以支持依赖倒转原则。设计师可以设计出接口,而程序员可以依照接口去写实现。

        (3)在一定程度上解耦合,依赖接口还不依赖具体实现,在替换实现类的时候,可以将影响减到最小。

        (4)实现多态。Spring  IoC

        https://blog.csdn.net/jj_nan/article/details/70161086

        https://blog.csdn.net/nvd11/article/details/42305895

        https://blog.csdn.net/u014508939/article/details/74312041

        https://blog.csdn.net/HytXwz/article/details/80556386

57. java用来运行一个.class文件

      javadoc用来生成api文档

      jar用来生成jar包

      javac用来把.java文件编译为.class文件

      jdb是java的调试器

      javaprof是剖析工具

58.下面代码的输出是什么?

    

    输出:null

    解析:new Sub();在创造派生类的过程中首先创建基类对象,然后才能创建派生类。创建基类即默认调用Base()方法,在方法中调用callName()方法,由于派生类中存在此方法,则被调用的callName()方法是派生类中的方法,此时派生类还未构造,所以变量baseName的值为null

59.JSP内置对象和属性列举如下

    

    application对象是共享的,多个用户共享一个,以此实现数据共享和通信

    内置对象里没cookie

60.

对于外部类来说,只有两种修饰,public和默认(default),因为外部类放在包中,只有两种可能,包可见和包不可见。

对于内部类来说,可以有所有的修饰,因为内部类放在外部类中,与成员变量的地位一致,所以有四种可能。

61.内部类总结

    

62.两个互相引用对象的垃圾回收

    深入理解java虚拟机一书中提及判断对象是否存活的方法有引用计数法和可达性分析法

    (1)引用计数法即给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1。当引用失效时,计数器值就减1。任何时刻计数器为0的对象就是不可能再被使用的。

        但是主流的java虚拟机没有采用引用计数算法,其中最主要的原因就是它很难解决对象之间互相循环引用的问题。

        对象A和B互相引用,导致他们的引用计数都不为0,于是引用计数算法无法通知GC收集器回收他们。

    (2)可达性分析法是主流的实现,通过一系列的被称为“gc roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到“gc roots”没有任何引用链相连时,则证明此对象是不可用的。

        可以作为“gc roots”的对象:

            1.虚拟机栈(栈针中的局部变量表)中引用的对象

            2.方法区中类静态属性引用的对象。

            3.方法区中常量引用的对象

            4.本地方法栈中JNI引用的对象。

        

        所以此种方法中即使对象AB互相引用也会被回收

        对于可达性分析算法而言,未到达的对象并非是“非死不可”的,若要宣判一个对象死亡,至少需要经历两次标记阶段

        1. 如果对象在进行可达性分析后发现没有与GCRoots相连的引用链,则该对象被第一次标记并进行一次筛选,筛选条件为是否有必要执行该对象的finalize方法若对象没有覆盖finalize方法或者该finalize方法是否已经被虚拟机执行过了,则均视作不必要执行该对象的finalize方法,即该对象将会被回收(没有第二次机会了)。反之,若对象覆盖了finalize方法并且该finalize方法并没有被执行过,那么,这个对象会被放置在一个叫F-Queue的队列中,之后会由虚拟机自动建立的、优先级低的Finalizer线程去执行,而虚拟机不必要等待该线程执行结束,即虚拟机只负责建立线程,其他的事情交给此线程去处理。

        2.对F-Queue中对象进行第二次标记,如果对象在finalize方法中拯救了自己,即关联上了GCRoots引用链,如把this关键字赋值给其他变量,那么在第二次标记的时候该对象将从“即将回收”的集合中移除,如果对象还是没有拯救自己,那就会被回收。如下代码演示了一个对象如何在finalize方法中拯救了自己,然而,它只能拯救自己一次,第二次就被回收了。

    相关垃圾回收知识:

        强软弱虚四种引用

        

    GC是完全自动的,不能确定具体的回收时间。gc只能释放堆上的内存,而局部变量放在栈上,栈上的内存必须用finalize()释放

    https://www.cnblogs.com/xiaoxi/p/6486852.html

63.字符串类内存空间解释

    字符串String对象在堆内存上有两种空间:

    (1)字符串池(String pool):特殊的堆内存,专门存放String对象,且不会有重复的值。

    (2)普通堆内存空间:此处的String对象一般是通过调用new操作符得到。

    http://www.cnblogs.com/InformationGod/p/9471450.html

64.synchronized和lock比较

    https://www.cnblogs.com/jiangds/p/6476293.html

65.hashmap原理和currentHashmap

    结构:内部是通过 数组 + 链表 的结构实现的

    索引:首先计算keyhashcode,再对hashcode进行二次hash,然后再对数组的长度进行取模

    java8的性能改善:使用中会出现拉链过长的情况,一旦出现拉链过长,则会严重影响HashMap的性能。于是,在JDK1.8版本中,对数据结构做了进一步的优化,引入了红黑树。而当链表长度太长(默认超过8)时,链表就转换为红黑树(那一条过长的链转化,其他不变),利用红黑树快速增删改查的特点提高HashMap的性能,其中会用到红黑树的插入、删除、查找等算法。

        当插入新元素时,对于红黑树的判断如下:

        判断table[i] 是否为treeNode,即table[i] 是否是红黑树,如果是红黑树,则直接在树中插入键值对,否则转向下面;

        遍历table[i],判断链表长度是否大于8,大于8的话把链表转换为红黑树,在红黑树中执行插入操作,否则进行链表的插入操作;遍历过程中若发现key已经存在直接覆盖value即可;

    扩容时机:当前容器的元素个数,如果大于等于阈值(当前数组的长度乘以负载因子的值)的时候,就要自动扩容啦

    扩容因子:系统默认负载因子为0.75,最好初始大小值默认为16(大于元素个数的最小2的幂)

    扩容:扩容(resize)就是重新计算容量,初始化一个新的数组再将数组的值转移到新数组里,并且修改hashMap对该数组的引用指向新的数组。扩容一次为2倍大小

    https://www.cnblogs.com/hongdada/p/6024832.html

    

    Segment 是一种可重入锁(继承ReentrantLock)

    currentHashMap负载因子0.75,初始容量 16,concurrencyLevel 实际上是Segment的实际数量。

    ConcurrentLevel 一旦设定的话,就不会改变。ConcurrentHashMap当元素个数大于临界值的时候,就会发生扩容。但是ConcurrentHashMap与其他的HashMap不同的是,它不会对Segmengt 数量增大,只会增加Segmengt 后面的链表容量的大小。即对每个Segmengt 的元素进行的ReHash操作。

    HashEntry是volatile的

    https://blog.csdn.net/jjc120074203/article/details/78625433

66.sleep方法和wait方法的区别

    sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep 不会释放对象锁

    wait 是Object 类的方法,对此对象调用wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify 方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

    使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用

    sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

    为什么wait(),notify()方法要和synchronized一起使用:

    因为wait()方法是通知当前线程等待并释放对象锁,notify()方法是通知等待此对象锁的线程重新获得对象锁,然而,如果没有获得对象锁,wait方法和notify方法都是没有意义的,即必须先获得对象锁,才能对对象锁进行操作,于是,才必须把notify和wait方法写到synchronized方法或是synchronized代码块中了。

    https://www.cnblogs.com/jiangyi-uestc/p/5679464.html

67.java nio是同步非阻塞的

    同步体现在 selector 仍然要去轮循判断 channel 是否准备好,非阻塞体现在这个过程中处理线程不会一直在等待,可以去做其他的事情。

68.java ==和equals

    对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

    如果作用于引用类型的变量,则比较的是所指向的对象的地址

 对于equals方法,注意:equals方法不能作用于基本数据类型的变量

    如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

    诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

69.在编译程序时,所能指定的环境变量不包括class path

     javac一次可同时编译数个Java源文件

     javac.exe能指定编译结果要置于哪个目录(directory)

70.

    

    正确答案:true     false

    解析:这题是在考编译器的优化,hotspot中 编译时"tao"+"bao"将直接变成"taobao",b+c则不会优化,因为不知道在之前的步骤中bc会不会发生改变,而针对b+c则是用语法糖,新建一个StringBuilder来处理

71.下列不属于Java语言性特点的是

    

    真数组: 数组元素在内存中是一个接着一个线性存放的,通过第一个元素就能访问随后的元素,避免了数据覆盖的可能性,和数据类型覆盖并没有关系。

72.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

牛客网刷题-java 的相关文章

  • repo 使用

    repo 使用 repo start 创建并切换分支 repo start newbranchname all projectName repo start是对git checkout b 命令的封装 git checkout b 是在当前
  • 无监督特征选择算法综述

    无监督特征选择算法 Filter方法 只使用数据的内在属性 不使用聚类等其他辅助方法 速度快 单变量 Information based methods SUD Sequential backward selection method fo
  • 毕业设计-基于机器视觉的手写字体智能识别系统

    目录 前言 课题背景和意义 实现技术思路 一 系统整体结构框架设计 二 系统硬件设计 三 系统软件框架设计 四 实验与分析 五 总结 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准
  • 分布式系统下的纠删码(二) -- Locally Repairable Codes (LRC)

    分布式系统下的纠删码 二 Locally Repairable Codes LRC 一 名词解释 MDS Maximun Distance Separable MDS 性质 是纠删码的一个重要性质 它保证n k m个磁盘中任意k个磁盘都可恢
  • OpenLayers官网教程-移动端地图和传感器

    这一系列翻译自openlayers官网的WorkShop OL官网提供了多个系列教程供开发者学习参考 其中QuickStart是面向初学者的hello world Tutorials提供了构建OL应用的一些基础知识 WorkShop 本系列
  • scss 样式穿透

    当一些组件 例如 轮播 全局引入时 只改当前页面的样式 用css类选择器不能直接选择更改 应用scss样式穿透 注 scoped让css只在当前组件生效 不考虑兼容问题 去掉scoped也可以直接更改css样式
  • # leetcode#5最长回文数C++

    leetcode 5最长回文数C 一 思路一 中心扩散 对每一个字符 检测它与它旁边的数是否为回文数 如果是 那么再扩展它 的长度检查 分奇偶情况讨论 得到以该字符为中心最长的回文数 在遍历过程中用max 2 储存该目前最长的回文数位置和长
  • iphone11屏比例_iPhone每一代的屏幕尺寸比例是多少

    iPhone2G屏幕为3 5英寸 分辨率为320 480像素 比例为3 2 iPhone3G屏幕为3 5英寸 分辨率为320 480像素 比例为3 2 iPhone3GS屏幕为3 5英寸 分辨率为320 480像素 比例为3 2 iPhon
  • QOpenGLWidget 纹理贴图

    环境 QT 5 12 8 本人初学Opengl 想要绘制一个正方形并且贴纹理 以下是参考别人代码自己整理的 创建QT工程 结构如下 代码如下 glwidget h ifndef GLWIDGET H define GLWIDGET H in
  • [Python 与 炒股] TuShare 使用篇之三

    2016年新年第一贴 大年夜搞这个只能说明春晚实在是有点无聊 在之前的blog里写了一个最简单的例子 http blog csdn net robertsong2004 article details 50642655 现在试一下简单的分析
  • 渗透测试-01信息收集

    0x01信息收集 1 什么是信息收集 信息收集是指通过各种方式获取所需要的信息 以便我们在后续的渗透过程更好的进行 比如目标的站点IP 中间件 脚本语言 端口 邮箱等等 信息收集包含资产收集但不限于资产收集 2 信息收集的意义 1 信息收集
  • 使用 easyjson,生成 xxx_easyjson.go 文件之后,对测试结果所产生的影响

    文章评论 原文地址 https blog csdn net luslin1711 article details 90244468 正文 博主 你好 文中的测试结果 似乎不是很正确 由于评论区字数的限制 我另开一篇文章 请您解惑 以下是我的
  • 轻量级c语言开源日志库log.c介绍 - 实现不同级别和参数化日志打印

    前言 c语言没有现成的日志库 如果要记录日志 需要自己封装一个日志库 如果要实现日志级别和参数打印 还是比较麻烦的 正好在github找到了一个c语言开源日志库 可以实现日志级别打印 参数打印 而且还会记录日期和行号 最重要的是代码非常少
  • Google API 设计指南-文档

    翻译自 API Design Guide Documentation 这一章是为 API 添加内部文档的指南 大部分 API 有概述 教程和更高级别的参考文档 此指南不讨论 API 名 资源名和方法名的信息请查看命名约定 注释格式 在 pr
  • OpenGL ES几个概念-顶点着色器、片元着色器、EGL

    一 OpenGL ES OpenGL ES是使用在手机端和嵌入式里的3D图形应用程序编程接口 是跨平台的API OpenGL ES是OpenGL的简化版本 OpenGL2 x 版本相比 1 x 版本有较大差异 1 x 版本为 fixed f
  • Kylin Flink Cube 引擎的前世今生

    Apache Kylin 是一个开源的 分布式的分析型数据仓库 提供Hadoop Spark 之上的 SQL 查询接口及多维分析 OLAP 能力以支持超大规模数据 它能在亚秒内查询巨大的表 Kylin 的核心思想是 预计算 将数据按照指定的
  • C++11之智能指针(unique_ptr、shared_ptr、weak_ptr、auto_ptr)浅谈内存管理

    目录 前言 智能指针 使用方法 unique ptr 实现unique ptr类 使用uniquePtr shared ptr 实现SharedPtr 使用shared ptr weak ptr 使用weak ptr 前言 下面这段代码看起
  • Windows下同时安装python 2 和 3 详细教程 ——为了GitHack工具 同时安装python2和3的过程记录

    搜了半天发现 GitHack竟然真的只能在python2中运行 心痛 不得不去下python2 我之前下的是python3 文章目录 1 下载 安装 python2和3 2 配置python 2 x 的环境变量 3 将python 2 x
  • 投票==公平???

    前言 我们在团队中遇到意见分歧时 通常会通过投票机制以期来得到一个公平 公正的让所有人都能信服的解决方案 但是 这样的方案是否真的绝对公平 只有道德上的相对民主 没有制度上的绝对公平 求同存异才能长治久安 关于投票的经典场景 古雅典陶片放逐
  • TP-LINK交换机登录Web页面的操作方法

    TP LINK交换机登录Web页面的操作方法 之前小编介绍了TP LINK路由器登录Web管理页面的操作步骤 以及路由器无法登录的解决方法 详见文章 Tp link路由器管理界面无法登陆原因解析 下面栏目小编具体说说TP LINK交换机登录

随机推荐

  • Matlab设计数字滤波器入门

    一个3阶低通滤波器由下面差分方程描述 y n 0 0181 x n 0 0543 x n 1 0 0543 x n 2 0 0181 x n 3 1 76 y n 1 1 1829 y n 2 0 2781 y n 3 画出这个滤波器的幅度
  • VUE的基本使用(上)

    一 开发环境配置 VSCode 插件安装 jshint js代码规范检查 Beautify 一键美化代码的插件 Vetur vue文件识别插件 Javascript ES6 code snippets ES6语法提示 Auto Rename
  • 计算机ip保留地址,ip地址显示为保留地址怎么解决

    ip地址显示为保留地址怎么解决 2016 09 05 10 28 标签 dhcp ip地址 ip是保留地址怎么解决 ip作为计算机网络相互连接进行通信的协议 当dhcp超出系统规定的时间后 便会自动分配一个保留地址作为ip 如果主机ip地址
  • 涂鸦WIFI模组方案(MCU SDK)

    摘自涂鸦官方视频教程 https www bilibili com video BV1pb41117LD spm id from 333 999 0 0等 摘自 涂鸦IoT开发平台MCU开发接入 Wi Fi App面板 地址 https w
  • window.close()无效,原因剖析

    官方解释 https developer mozilla org en US docs Web API Window close 简单的说就是 window close 方法只能关闭由window open 或者浏览器直接输入url打开的页
  • 【敬伟ps教程】图层进阶知识

    文章目录 图层过滤和锁定 图层链接 图层编组 图层合并 图层盖印 图层复合 图层剪贴蒙版 图层过滤和锁定 图层过滤可以根据图层不同的性质进行查看管理 图层锁定即是对图层或图层某部分进行操作保护 按钮分别为 锁定透明像素 禁止对透明区域进行操
  • 使用JavaScript实现一个简单的计时器

    简介 计时器是前端开发中常见的功能之一 它可以帮助我们记录时间并进行倒计时等操作 在本篇博客中 我将向大家介绍如何使用JavaScript实现一个简单的计时器 实现步骤 第一步 创建HTML结构 首先 我们需要在HTML中创建一个用于显示计
  • 大语言模型参数说明(Temperature,Top p,Top k)

    如下是一些模型的运行界面 在使用OpenAI的接口 常常遇见一些参数 搞清它们的含义促使我们更进一步理解输出的结果 学习传送带 1 Temperature 用于调整随机从生成模型中抽样的程度 因此每次点击 生成 时 相同的提示可能会产生不同
  • app性能

    性能获取办法 appium webview context execute script perfmance api appium selenium的ExecuteScript Api 注入js return JSON stringify
  • muduo网络库学习(九)日志类Logger和LogStream,将日志信息打印到屏幕

    每一个成熟的项目都有大大小小的日志系统 在关键的地方打印日志信息 常用来跟踪程序运行 查找错误原因等 可以节省大量的debug时间 muduo的日志信息有5个级别 TRACE 细粒度最高的日志信息 打印的最详细 DEBUG 细粒度级别上对调
  • 程序中的耦合与解耦学习(三)——解耦学习1

    以下内容来源于网友内容 引用网友链接 简要 一 解耦都是需要代理的 本质上并不存在没有代理就发生两个部件之间解耦的情况 二 耦合 指的是两个可以协作的部件的关系 A和B可以协作 则A和B的关系是耦合 三 如果A可以和O P Q S 简称集合
  • API接口签名验证

    系统从外部获取数据时 通常采用API接口调用的方式来实现 请求方和接口提供方之间的通信过程 有这几个问题需要考虑 1 请求参数是否被篡改 2 请求来源是否合法 3 请求是否具有唯一性 今天跟大家探讨一下主流的通信安全解决方案 参数签名方式
  • java使用策略模式实现统一接口的不同效果返回

    首先说下什么是策略模式以及策略模式的优缺点 策略模式 是指定义了算法家族 分别封装起来 让他们之间可以相互替换 此模式让算法的变化不会影响到其他使用算法的用户 可以避免多重的if else 判断语句 1 加入系统中有很多类 而他们的区别仅仅
  • JAVA 四大作用域名

    JavaWeb有ServletContext ServletRequest HttpSession PageContext四大域对象 下面主要从域对象的生命周期 作用 作用范围进行介绍 Servlet中只有前三个域对象 JSP中多了一个pa
  • [2018 ICPC 青岛] 解题记录ing

    M Function and Function 队友说直接暴力即可 include
  • 安装ChormeOS

    一 准备工具 16G的U盘一个 支持UEFI启动的电脑 二 下载工具 Ubuntu Mate 镜像下载 https ubuntu mate org download Rufus写盘工具 https rufus ie Chrome 安装框架下
  • SpringBoot + redis 简单运用

    初始项目 pom xml引入redis
  • LeetCode每日一题之二分搜索

    文章目录 1 关于二分搜索常见的误区 2 左闭右闭区间的写法 3 左闭右开区间的写法 4 找到第一个大于target的数 5 找到第一个小于target的数 6 找到第一个大于等于taregt的数 7 找到第一个小于等于target的数 1
  • Vue3 word如何转成pdf代码实现

    博主 锅盖哒 文章核心 word如何转换pdf 目录 1 前端部分 2 后端部分 在Vue 3中 前端无法直接将Word文档转换为PDF 因为Word文档的解析和PDF的生成通常需要在后端进行 但是 你可以通过Vue来触发后端的转换过程 下
  • 牛客网刷题-java

    大部分解答为牛客网各位同学的精彩回答 本文只是选择一些互联网常考题目记录备忘 1 一个类的构造器可以调用这个类中的其他构造器 this的作用其中一个就是在一个构造方法中调用另一个构造方法 格式为this 参数 如 this x super是