面试题之好玩的程序:持续更新

jdbc基本操作 (数据库连接依赖要加上,或者直接依赖jar包,我用的是8.0.17版本)

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
public class User {
    private Integer id;
    private String name;
}  //省略get set 构造方法
public class Jdemo1 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        /*Class.forName是把这个类加载到JVM中,加载的时候,就会执行其中的静态初始化块,完成驱动的初始化的相关工作。 */
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/community?serverTimezone=UTC"
                , "root", "121518");
        String sql = "select * from user where id = ?";
        PreparedStatement pstm = connection.prepareStatement(sql);
        pstm.setInt(1,8);
        ResultSet resultSet = pstm.executeQuery();
        while (resultSet.next()){
            User user = new User();
            user.setId(resultSet.getInt(1));  //可以是下标(从1开始)或者是数据库对应字段
            user.setName(resultSet.getString("name"));
            System.out.println(resultSet.getInt("id"));
            System.out.println(resultSet.getString(2));
            System.out.println(user);
        }
        resultSet.close();
        pstm.close();
        connection.close();
    }
}

下面的代码执行了几次(0次)

        for(int x=0,y=0;(y!=0&&x<5);x++){
            System.out.println(x);
        }

下面的代码怎么执行(0,1,2,3,4,4,4…无限循环)

        for (int i = 0; i < 10; i++) {
            System.out.println(i);
            i=3;
        }

选择排序(冒泡)

    int[] a = new int[]{6,9,4,2,54};
    for (int i = 0; i < a.length ; i++) {
        int j = a[i];
        for (int k = i+1; k <a.length ; k++) {
            if(a[k]<j){
                int temp = a[k];
                a[k] = a[i];
                a[i] = temp;
            }
        }
    }

下面那个能语句输出(1,4) -------- (2,3)报错

        String[] a =new String[]{"1","2"};
        String b = "2222";
        1 System.out.println(a.length);
        2 System.out.println(a.length());
        3 System.out.println(b.length);
        4 System.out.println(b.length());
 String b = null;
 System.out.println(StringUtils.isBlank(b));  true
 
 Integer a = null;
 System.out.println(StringUtils.isBlank(a.toString())); 空指针异常

list转成string

  List<String> list = new ArrayList<>();
  list.add("a");
  list.add("b");
  list.add("b");
  System.out.println(String.join(",", list));     a,b,b

list转set

  List<String> list = new ArrayList<>();
  list.add("a");
  list.add("b");
  list.add("b");
  Set<String> set = new HashSet<>(list);

遍历set

        for (String str : set) {
            System.out.println(str);
        }
        或者
        Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

set转list

        ArrayList<String> strings = new ArrayList<>(set);
        System.out.println(strings.size());

在一个字符串中大写变小写,小写变大写

public class Demo1 {
    public static void main(String[] args) {
        String a = "aF%7dfHJOIdjdfL875";
        System.out.println('a'-0);   //97
        System.out.println('A'-0);   //65    所以  a->A 减32   A->a  加32
        char[] chars = a.toCharArray();
        StringBuffer stringBuffer = new StringBuffer();
        for (int i=0;i<a.length();i++){
            if(a.charAt(i)>='a'&&a.charAt(i)<='z'){
                /*两种转换方法*/
                stringBuffer.append((char)(a.charAt(i)-32));
//                stringBuffer.append(String.valueOf(a.charAt(i)).toUpperCase());
            }else
            if(a.charAt(i)>='A'&&a.charAt(i)<='Z'){
                stringBuffer.append((char)(a.charAt(i)+32));
//                stringBuffer.append(String.valueOf(a.charAt(i)).toLowerCase());
            }
            else{
                stringBuffer.append(a.charAt(i));
            }
        }
        /*四种方法    stringbuffer   ----> string  */
        a = String.valueOf(stringBuffer);
//        a=new String(stringBuffer);
//        a=stringBuffer.toString();
//        a=stringBuffer.substring(0,stringBuffer.length());
        System.out.println(a);

    }
}

存在使i + 1 < i的数吗() 存在

        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MAX_VALUE+1);

下面程序能正常运行吗() 能

public class NULL {
    public static void haha(){
        System.out.println("haha");
    }
    public static void main(String[] args) {
        ((NULL)null).haha();
    }
}

因为null值可以强制转换为任何java类类型,(String)null也是合法的。但null强制转换后是无效对象,其返回值还是为null,而static方法的调用是和类名绑定的,不借助对象进行访问所以能正确输出。反过来,没有static修饰就只能用对象进行访问,使用null调用对象肯定会报空指针错了

下面程序的运行结果是什么()
对象的初始化顺序:(1)类加载之后,按从上到下(从父类到子类)执行被static修饰的语句;(2)当static语句执行完之后,再执行main方法;(3)如果有语句new了自身的对象,将从上到下执行构造代码块、构造器(两者可以说绑定在一起)。

class HelloA {

    public HelloA() {
        System.out.println("HelloA");
    }
    
    { System.out.println("I'm A class"); }
    
    static { System.out.println("static A"); }

}

public class HelloB extends HelloA {
    public HelloB() {
        System.out.println("HelloB");
    }
    
    { System.out.println("I'm B class"); }
    
    static { System.out.println("static B"); }
    
    public static void main(String[] args) {

        System.out.println("-------main start-------");
        new HelloA();
        new HelloB();
        System.out.println("-------main end-------");
    }
}

在这里插入图片描述

参考
https://www.cnblogs.com/lanxuezaipiao/p/3371224.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值