Java零碎知识点(二)

Java注意点

1.两种打印方式

String [] values = {"abc", "def", "cvb"};
        //两种打印的方式一模一样
        for(String value : values){
            System.out.println(value);
        }
        for (int i = 0; i < values.length; i++) {
            System.out.println(values[i]);
        }

2.随机生成一个数组:(N和100000是根据需要自己确定)

final int N = 50000; //常量
        int[] nums = new int[N];
        for (int i = 0; i < nums.length; i++) {
            nums[i] = (int)(Math.random() * 100000);
        }

3.测试程序用时:

long startTime = System.currentTimeMillis();
    /**此处是要测试的程序*/
    long endTime = System.currentTimeMillis();
    System.out.println("此程序共耗时:" + (endTime - startTime) + "毫秒!");

4.Java中自带的数组排序算法:

import java.util.Arrays;
    Arrays.sort(nums);  //nums是你已经定义好的一个数组名
    //如果要逆序
    for (int i = 0; i < nums.length / 2; i++) {
            int temp = nums[i];
            nums[i] = nums[nums.length - i - 1];
            nums[nums.length - i - 1] = temp;
        }

5.注意:–对象和数组、String类都是引用类型。

6.
//常用字符包装类

    Character.isLetter(ch);
    Character.isLetterOrDigit(ch);
    Character.isJavaIdentifierPart(ch)  //判断用来定义Java变量的单词中,除首字母外,其他字符是否合法
    Character.isJavaIdentifierStart(ch)  //判断Java变量中,第一个字符是否是合法字符

7.

        public static void main(String[] args) {        `   

        Demo demo = new Demo();
        Swap(demo);
        System.out.println(demo.attr1 + "\t"  + demo.attr2);
    }

    static class Demo{
        int attr1 = 10;
        int attr2 = 50;
    }

    public static void Swap(Demo demo){//demo是一个临时变量,存放的是main中demo的地址
        demo = new Demo();//意为在局部变量里又申请了一块空间,把这个空间地址的值覆盖了原来的值,相当于demo指向了另外一块新的内存空间,
        //所以在新内存空间中调换不会影响原来空间的值,输出的还是10和50
        int temp = demo.attr1;
        demo.attr1 = demo.attr2;
        demo.attr2 = temp;
    }   

8.

public static void main(String[] args){
        String name1 = "abc";
        String name2 = "abc";

        System.out.println(name1 == name2);
    }
    答案是true!!!!

因为:

Java中为了效率考虑:
        --以""包括的字符串,只要内容相同(顺序、大小写相同)
        --无论在程序代码中出现几次,JVM都只会创建一个实例,放在字符串池中维护


    但是如果是String name3 = new String("abc");
              String name4 = new String("abc");
              System.out.println(name3 == name4);
     打印的则是false ,因为此处创建的是一个全新的内存,是不同的地址

9.

Scanner input = new Scanner(System.in); 
        //trim方法:去掉字符串左右两侧的空格,不会去除字符串之间的空格
        //建议:在用户输入用户名后使用
        System.out.println("请输入用户名:");
        String uName = input.nextLine().trim();
        System.out.println("--" + uName + "--");

10.

 Scanner input = new Scanner(System.in);
        String password = "ab3456abc";
        //substring[beginIndex, endIndex)  ,
        System.out.println(password.substring(1, 3)); //所以截取的是[1,3)  故只打印b,3
        System.out.println(password.substring(3));//从3号下标开始截取至最后一个,输出的是456abc

11.

//演示常用的几种String对象的构造方式
        String str1 = "你好世界";
        String str2 = new String();  //使用默认构造 String str2 = "";
        String str3 = new String(str1);

        char[] chArray = {'a', 'b', 'c'};  //在c语言中:字符数组和字符串的区别就在于最后一个元素是否是\0
        //将字符数组转换成String对象
        String str4 = new String(chArray);
        //转换回去
        chArray = str4.toCharArray();

        //字节数组与字符串的转换   byte数据类型:-128到127之间
        byte[] byteArray = {104, 101, 108, 108, 111};
        String str5 = new String(byteArray);
        System.out.println(str5);

        //字符串转码
        String str6 = new String(str1.getBytes(), "UTF-8");
        System.out.println(str6);

你可能感兴趣的:(java)