• java基础1


    1.简述String类中的equals方法与Object类中的equals方法的不同点。

    答: String类中的equals方法是用来判断两个对象的内容是否相同,Object类中的equals方法是用来判断两个对象是否是内存的同一块内存空间。

    2.下列代码运行结果

    public class ToStringTest{
        static int i = 1;
        public static void main(String args[]){
            System.out.println("love " + new ToStringTest());//love java
            ToStringTest a = new ToStringTest();
            a.i++;
            System.out.println("aa " + a.i);//aa 2
        }
        public String toString(){
            System.out.print("I ");//I
            return "java ";
        }
    }

    I love java
    aa 2

    原因:当执行代码的时候,首先加载静态变量,然后执行main方法,由于main方法内部第一行代码为输出语句,里面new了此类对象,当执行此行代码时会先创建了本类的对象,由于此类重写了toString方法,会先执行toString方法的打印输出,然后返回“java ”,再执行main方法第一行打印输出。在Java中“System.out.println(类对象名);”实际输出的是该对象的toString()方法返回的字符串,即括号中的内容等价于类对象名.toString(),toString方法的好处是在碰到println方法的时候会被自动调用,不用显示的写出来。

    3.下列代码运行结果

        (1)
            String s1 = new String("abc");
            String s2 = "abc";
            System.out.println(s1 == s2);         //false
            System.out.println(s1.equals(s2));         //true
        (2)
            String s1 = "abc";
                  String s2 = "abc";
            System.out.println(s1 == s2);         //true
            System.out.println(s1.equals(s2));     //true
        (3)
            String s1 = "a" + "b" + "c";
                  String s2 = "abc";
            System.out.println(s1 == s2);             //true
            System.out.println(s1.equals(s2));     //true
        (4)
            String s1 = "ab";
                 String s2 = "abc";
                 String s3 = s1 + "c";
            System.out.println(s3 == s2);         //false
                  System.out.println(s3.equals(s2));       //true

    4.简述StringBuilder类与String类的区别。

    答:String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象,所以经常改变内容的字符串最好不要用String,因为每次生成对象都会对系统性能产生影响。

    StringBuilder又称为可变字符序列,是JDK5.0中新增加的一个类,它是一个类似于String的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。即它是一个容器,容器中可以装很多字符串,并且能够对其中的字符串进行各种操作。它的内部拥有一个数组用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容,StringBuilder会自动维护数组的扩容。

    5.模拟在一副牌中,抽取第1张,第5张,第50张扑克牌。

        public class Test3 {
            public static void main(String[] args) {
                // 获取所有扑克牌
                String[] puke = getPuke();
        
                // 抽取指定的三种扑克牌
                int num1 = 1;
                int num2 = 5;
                int num3 = 50;
                String[] pk3 = get3(puke , num1 ,num2,num3);
                // 打印抽取的牌
                for (int i = 0; i < pk3.length; i++) {
                    System.out.print(pk3[i] + " ");
                }
            }
        
            private static String[] getPuke() {
        
                String[] colors={"黑色","红桃","梅花","方块"};
                String[] nums={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        
                String[] puke = new String[54];
                int index = 0;
                for (int i = 0; i < nums.length; i++) {
                    for (int j = 0; j < colors.length; j++) {
                      puke[index] = colors[j]+nums[i];
                        index ++;
                    }
                }
                puke[52] = "小王";
                puke[53] = "大王";
        
                return puke;
        
            }
        
            public static String[] get3(String[] puke, int i, int i2, int i3) {
                String[] pk3 = new String[3];
                pk3[0] = puke[i - 1];
                pk3[1] = puke[i2 - 1];
                pk3[2] = puke[i3 - 1];
                return pk3;
            }
        }

    6.获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08 08:08:08。

    public class DateTest {
        public static void main(String[] args) {
            //获取当前日期对象 now;
            Date now = new Date();
            //创建SimpleDateFormat对象 df,并制定日期格式
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            //调用df的format(Date  date) 方法,传入now; 接收返回的字符串
            String datestr = df.format(now);
            //打印这个字符串
            System.out.println(datestr);
        }
    }

    7.使用SimpleDateFormat类,把2018-05-04转换为2018年05月04日。

    public class DateFormatTest {
        public static void main(String[] args) throws ParseException {
            //创建SimpleDateFormat对象df1,指定日期模式为yyyy-MM-dd
            SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
            //调用df1的parse(String str)方法传入2018-05-04,得到对应日期类型
            Date date = df1.parse("2018-05-04");
            //创建日期格式化对象df2,在获取格式化对象时可以指定风格
            DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日");
            //调用df2的format(Date date) 传入刚才转换的日期
            String str = df2.format(date);
            System.out.println(str);
        }
    }

    8.现有一个字符数组{'i','t','c','a','s','a'},请使用System类中的arraycopy()方法在控制台输出“itcast”。(提示:将[1]号数组元素复制到最后位置并覆盖原有元素。)

    public class ArraycopyTest {
        public static void main(String[] args) {
            char[] cha ={'i','t','c','a','s','a'};
            //将cha数组中第2个元素,复制到目标数组最后一位数组上
            System.arraycopy(cha, 1, cha, 5, 1);
            //遍历目标数组,在控制台输出字符串
            for (int i = 0; i < cha.length; i++) {
                System.out.print(cha[i]);
        }
        }
    }

    9.用程序判断2018年2月14日是星期几

    public class CalendarTest01 {
        public static void main(String[] args) {
            //创建Calendar对象
            Calendar c = Calendar.getInstance();
            //将给定的日历字段设置到Calendar对象中
            c.set(Calendar.YEAR, 2018);
            c.set(Calendar.MONTH, 1);
            c.set(Calendar.DATE, 14);
            //设置年
            int year = c.get(Calendar.YEAR);
            //设置月
            int month = c.get(Calendar.MONTH)+1;
            //设置日
            int date = c.get(Calendar.DATE);
            //设置星期
            char week = getWeek(c.get(Calendar.DAY_OF_WEEK));
            //输出结果
            System.out.println(year+"年"+month+"月"+date+"日是星期"+week);
        }
        //定义方法,获取星期汉字
        public static char getWeek(int a){
            char[] c = {' ','日','一','二','三','四','五','六'};
            return c[a];
        }
    }

    10.分析以下需求,并用代码实现:

           (1)定义数字字符串数组{"010","3223","666","7890987","123123"};

           (2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等,第二个数字和倒数第二个数字是相等的,依次类推)的,并逐个输出;

           (3)如:010 是对称的,3223 是对称的,123123 不是对称的;

           (4)最终打印该数组中对称字符串的个数。

    public class StringBuilderTest02 {
        public static void main(String[] args) throws IOException {
            //定义数字字符串数组
            String[] str = {"010","3223","666","7890987","123123"};
            SBTest(str);
        }
    
        public static void SBTest(String[] str) {
            int count = 0;
            //遍历定义的字符串数组
            for (String string : str) {
                //创建StringBuilder对象
                StringBuilder sb = new StringBuilder(string);
                //调用reverse()方法,将遍历的数字进行反转,然后用equals()方法对比是否与原数字相同
                if (sb.reverse().toString().equals(string)) {
                    count++;
                    System.out.println(string + "是对称的");
                }
            }
            System.out.println("总数为" + count);
        }
    }


  • 相关阅读:
    Qt5.3中qml ApplicationWindow设置窗口无边框问题
    解决qt5在ubuntu下无法调用fcitx输入中文的问题
    qt4.8中多线程的几种方式
    qt5.2.1在linux下去除最大化和最小化按钮
    最近玩了一下qt5.2.1,顺着写点东西,关于这个版本设置程序主窗口居中
    控制台小游戏-贪吃蛇,c++和c#版
    数据库锁机制(一)——概述
    jQuery插件编写学习+实例——无限滚动
    通过错误处理来理解三次握手和四次挥手
    发现一个木马
  • 原文地址:https://www.cnblogs.com/pengyupeng/p/11216309.html
Copyright © 2020-2023  润新知