JavaSE第八天


1、String类型面试题
    

public static void main(String[] args) {
        //demo1();
        //demo2();
        //demo3();
        //demo4();
        String s1 = "ab";
        String s2 = "abc";
        String s3 = s1 + "c";
        System.out.println(s3 == s2);                    //false
        System.out.println(s3.equals(s2));         //true
    }

    private static void demo4() {
        //byte b = 3 + 4;                        //在编译时就变成7,把7赋值给b,常量优化机制
        String s1 = "a" + "b" + "c";
        String s2 = "abc";
        System.out.println(s1 == s2);             //true,java中有常量优化机制    
        System.out.println(s1.equals(s2));         //true
    }

    private static void demo3() {
        String s1 = new String("abc");            //记录的是堆内存对象的地址值        
        String s2 = "abc";                        //记录的是常量池中的地址值
        System.out.println(s1 == s2);             //false
        System.out.println(s1.equals(s2));         //true
    }

    private static void demo2() {
        //创建几个对象
        //创建两个对象,一个在常量池中,一个在堆内存中
        String s1 = new String("abc");        
        System.out.println(s1);
    }

    private static void demo1() {                //常量池中没有这个字符串对象,就创建一个,如果有直接用即可
        String s1 = "abc";
        String s2 = "abc";
        System.out.println(s1 == s2);             //true    
        System.out.println(s1.equals(s2));         //true
    }

}

2、可变参数
        只确定参数类型,不确定参数个数,参数可以是0~多个
        格式:数据类型... 变量名
      

 //可变参数
        public int add(int... a) {//可变参数在执行的过程中会变成对应类型的数组
            int sum = 0;
            for (int i : a) {
                sum += i;
            }
            return sum;
        }


        注意:1、可变参数(即使参数类型不相同)只能在参数列表的最后一位
              因为像public int add(int... a,int b) {
                                        int sum = 0;
                                        for (int i : a) {
                                            sum += i;
                                        }
                                        return sum;
                                }//在调用的时候,不知道是传入的参数是可变参数的还是后面的int类型的
                    2、一个方法不可以有多个可变参数
3、值传递和引用传递
   值传递:
   引用数据类型:

4、常用的API
   Object
    包装类:byte short char      int     float double long boolean
            Byte Short Character Integer Float Double Long Boolean
      自动装箱和自动拆箱
        自动装箱: 基本数据类型自动转换为对应的引用数据类型
        自动拆箱: 包装类型 自动转换为对应基本数剧类型
        Integer为例
        Integer i = 10;//自动装箱     Integer i1 = new Integer(10);
        Integer i2 = new Integer("10");
        int num2 = i2;//自动拆箱
   注意 Integer自动装箱的范围是byte类型的范围:-128~127,
             如果在这个取值范围内,自动装箱就不会新创建对象,而是从常量池中获取
            如果超过了byte取值范围就会再新创建对象
     Math类的常用方法:
    

     public static void main(String[] args) {
                //double abs(double num)  将参数的绝对值返回出去   |-10|
                double a1 = Math.abs(10);//10
                double a2 = Math.abs(-10);//10
                System.out.println("abs:"+a1);
                System.out.println("abs:"+a2);
                System.out.println("*************");
                //cbrt() 返回参数的立方根
                double a3 = Math.cbrt(27);//3
                double a4 = Math.cbrt(8);//2
                System.out.println("cbrt:"+a3);
                System.out.println("cbrt:"+a4);
                System.out.println("*************");
                //sqrt(a) 返回参数的平方根
                double c1 = Math.sqrt(4);
                double c2 = Math.sqrt(9);
                System.out.println("sqrt:"+c1);
                System.out.println("sqrt:"+c2);
                System.out.println("*************");
                //ceil()返回 大于等于参数的 最小整数
                double a5 = Math.ceil(3.14);//4
                double a6 = Math.ceil(-3.14);//-3
                System.out.println("ceil:"+a5);
                System.out.println("ceil:"+a6);
                System.out.println("*************");
                //floor() 返回小于等于参数的 最大整数
                double a7 = Math.floor(3.14);//3
                double a8 = Math.floor(-3.14);//-4
                System.out.println("floor:"+a7);
                System.out.println("floor:"+a8);
                System.out.println("*************");
                //max() 返回两者较大值
                double b1 = Math.max(10, 20);
                //min() 返回两者较小值
                double b2 = Math.min(10, 20);
                System.out.println("max:"+b1);
                System.out.println("min:"+b2);
                System.out.println("*************");
                //pow(a,b)  返回a的b次方
                double b3 = Math.pow(2, 3);
                double b4 = Math.pow(3, 2);
                System.out.println("pow:"+b3);
                System.out.println("pow:"+b4);
                System.out.println("*************");
                //random() 产生一个随机数[0,1)
                double b5 = Math.random();
                double b6 = Math.random();
                //FAQ? 随机一个 [21,50)整数   r.nextInt(29)+21;
                //(int)(Math.random()*29+21)
                System.out.println("random:"+b5);
                System.out.println("random:"+b6);
                System.out.println("*************");
                //round() 返回参数四舍五入的值 数值加0.5后取floor   
                double b7 = Math.round(3.14);//3
                double b8 = Math.round(3.51);//4
                System.out.println("round:"+b7);
                System.out.println("round:"+b8);
                System.out.println("*************");

                //toDegrees(a) 将弧度a 转化为角度返回出去
                double c3 = Math.toDegrees(2);
                double c4 = 180/Math.PI*2;
                System.out.println("toDegrees:"+c3);
                System.out.println(c4);
                System.out.println("*************");
                
                //toRadians(a) 将角度a 转化为弧度返回出去
                double c5 = Math.toRadians(90);
                double c6 = Math.PI/180*90;
                System.out.println("toRadians:"+c5);
                System.out.println(c6);
                System.out.println("*************");
                
            }


 System

     

   public class SystemDemo {
            public static void main(String[] args) {
                //static currentTimeMillis() 返回一个long类型 当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)。
                long sc = System.currentTimeMillis();
                //System.out.println(sc);
                
                // 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
                //System.arrayCopy(Object src, int srcPos,Object dest, int destPos, int length)    
                int[] dest = new int[10];
                int[] src = {1,2,3,4,5};
                System.arraycopy(src, 2, dest, 3, 3);
                System.out.println(Arrays.toString(dest));
                //System.exit(0);//程序退出
                System.out.println("abc");
                System.err.println("Error******8");//不一定在哪里输出,可能在“abc”之前,也可能在之后
            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值