【java】牛客网刷题

该博客总结了Java编程的多个知识点,包括匿名内部类、上转型对象、equals方法重写、拆箱装箱、文件类的限制、接口常量定义、关键字大小写、修饰符使用规则以及值传递和引用传递等内容。

1、

给出以下代码

public class TestObj{

    public static void main(String[] args){

        Object o=new Object(){

            public boolean equals(Object obj){

                return true;

            }

        };
          System.out.println(o.equals(“Fred”));

    }

}

答案:

true

总结:

知识点:

(1)本题构造了匿名内部类、并赋值给了对象o,同时相当于一个上转型对象。

(2)重写了equals方法。

疑问:

(1)一开始向为什么重写时参数是一个object的对象,使用时却输入一个字符串,后来明白了,String是Object的一个子类。

2、
以下代码将打印出

public static void main(String args[]) {
      List  Listlist1 = new ArrayList();
      Listlist1.add(0);
      List Listlist2 = Listlist1;
        System.out.println(Listlist1.get(0) instanceof Integer);
        System.out.println(Listlist2.get(0) instanceof Integer);
}

答案:
true true
知识点;
(1)拆箱装箱:需要它是Integer它就是Integer,需要它是int它就是int。
(2)将list1的值赋值给list2那么两者指向同一个堆内存空间

3、一个 .java文件中可以有多个类,唯一的限制就是文件中只能有一个public类,并且此public类必须与文件名相同。

4、接口中只能由默认静态变量(public final static)

5、java的关键字一律是小写,所以null是关键字NULL不是

6、其他类直接调用equals方法就相当于直接使用==,只有String重写了equals方法,只要内容一样就行。

7、在接口中使用 public static final 数据类型 常量名 来定义常量,也可以直接省去 public static final

8、
(1)abstract 和 final不能来同时修饰一个类
(2)abstract 和 private 不能同时修饰一个方法或变量
因为private作用范围是本类
(3)abstract 和 static 不能同时修饰一个方法
因为static修饰的方法可以用类名直接调用,而abstract方法没有方法体,不能调用

9、除了String和基本数据类型是值传递,其他都是引用传递。

牛客网笔记涵盖多个方面,以下是不同类型的笔记分享: - **单词消消乐**:牛妹会给牛牛n个单词,要求牛牛将这n个单词按照以下方式合并:从左往右合并单词,将合并后的单词作为第一个单词再与后面单词合并;如果最左边单词结尾字母与其后面一个的单词的开始字母相同,则最左边单词的结尾字母与之后一个单词的开始字母都会抵消掉而消失,重复上述操作直到某一个单词为空或者最左端的结尾字母与之后单词的开始字母不同,然后合并这两个单词作为一个单词放置再最左边。例如有三个单词"a",“b”,“c”,先将"ab"合并,最后将合并后的"ab"与"c"合并得到"abc" [^1]。 - **SQL考试分数问**:牛客每次举办企业笔试时,企业有不同的语言岗位,如C++工程师、JAVA工程师、Python工程师等,每个用户笔试完有不同的分数。需要找出每个岗位分数排名前2名的用户,得到的结果先按照language的name升序排序,再按照积分降序排序,最后按照grade的id升序排序。SQL查询语句如下: ```sql select g.id,name,score from( select *,dense_rank()over (partition by language_id order by score desc) as t_rank from grade ) g join language as l on g.language_id=l.id where t_rank<=2 order by name,score desc,id; ``` [^2] - **Java并发类相关**:Semaphore类,控制某个资源可被同时访问的个数;ReentrantLock类,具有和使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大;Future接口,表示异步计算的结果;CountDownLatch类,可以用来在一个线程中等待多个线程完成任务 [^3]。 - **删除公共字符**:具体思路是预先定义String result = ""作为输出结果。首先遍历str2字符串中的每个字符,将其存储到HashMap中(其中key为单个字符,value为该字符出现的次数);然后遍历str1字符串中的每个字符,str1与hashmap进行比较,通过hashmap.get(字符x)如果返回的value为null,则将此字符串加入到result输出结果中;最后输出result。详细代码实现如下: ```java import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str1 = scanner.nextLine(); String str2 = scanner.nextLine(); String result = ""; Map<Character, Integer> map = new HashMap<>(); for (int i = 0; i < str2.length(); i++) { if (map.get(str2.charAt(i)) == null) { map.put(str2.charAt(i), 1); } else { map.put(str2.charAt(i), map.get(str2.charAt(i)) + 1); } } for (int i = 0; i < str1.length(); i++) { if (map.get(str1.charAt(i)) == null) { result += str1.charAt(i); } } System.out.println(result); } } ``` [^4]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值