Java基本知识笔记

来源:互联网 发布:python pyqt 实例 编辑:程序博客网 时间:2024/05/20 16:32

关于String

String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。 一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder。

每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 == 比较时也为 false ,如果只需比较内容是否相同,应使用 equals() 方法


代码示例
public class HelloWorld {    public static void main(String[] args) {        String s1 = "imooc";        String s2 = "imooc";        //定义字符串s3,保存“I love”和s1拼接后的内容        String s3 = "I love" + s1;        // 比较字符串s1和s2        // imooc为常量字符串,多次出现时会被编译器优化,只创建一个对象        System.out.println("s1和s2内存地址相同吗?" + (s1 == s2));        //比较字符串s1和s3        System.out.println("s1和s3内存地址相同吗?" +    (s1 == s3)             );        String s4 = "I love " + s1;         //比较字符串s4和s3        // s1是变量,s4在运行时才知道具体值,所以s3和s4是不同的对象        System.out.println("s3和s4内存地址相同吗?" + (s4 == s3));    }}

返回结果为true、false、false


单引号表示字符,双引号表示字符串

代码示例
public class Solution {    public static void main(String[] args) {        String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";        // 出现次数        int num = 0;        // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数        for (int i = 0; i < s.length() - 1; i++) {            // 获取每个字符,判断是否是字符a            if (s.charAt(i) == 'a') {                // 累加统计次数                num++;            }        }        System.out.println("字符a出现的次数:" + num);    }}

当频繁操作字符串时,就会额外产生很多临时变量。使用 StringBuilder 或 StringBuffer 就可以避免这个问题。至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。

关于封装类

装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱

拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱


代码示例

//基本类型和封装类型的转换// 定义double类型变量double a = 91.5;// 手动装箱Double b = new Double(a);     // 自动装箱Double c = a;// 定义一个Double包装类对象,值为8Double d = new Double(87.0);// 手动拆箱double e = d.doubleValue();// 自动拆箱double f = d;//基本类型和字符串之间进行转换

基本类型转换为字符串有三种方法:

  1. 使用包装类的 toString() 方法

  2. 使用String类的 valueOf() 方法

  3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串

字符串转换成基本类型有两种方法:

  1. 调用包装类的 parseXxx 静态方法

  2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱

日期和时间

不建议使用
java.util 包中的 Date 类,使用 Date 类的默认无参构造方法创建出的对象就代表当前时间,但是显示不太友好(注:CST 代表 China Standard Time (中国标准时间,也就是北京时间,东八区))
java.text 包中的 SimpleDateFormat 类可以将日期转换为指定格式的文本,也可将文本转换为日期。


代码区

 //  使用format()方法将日期转换为指定格式的文本SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");// 创建Date对象,表示当前时间 Date now = new Date(); // 调用format()方法,将日期转换为字符串并输出System.out.println(sdf1.format(now));// 使用parse()方法将文本转换为日期String d = "2014-6-1 21:05:36";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 调用parse()方法,将字符串转换为日期Date date = sdf.parse(d);

建议使用
java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();

Calendar 类提供了 getTime() 方法,用来获取 Date 对象,完成 Calendar 和 Date 的转换,还可通过 getTimeInMillis() 方法,获取此 Calendar 的时间值,以毫秒为单位。


代码示例

// 创建Calendar对象Calendar c = Calendar.getInstance();// 将Calendar对象转换为Date对象Date date = c.getTime();// 创建SimpleDateFormat对象,指定目标格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 将日期转换为指定格式的字符串String now = sdf.format(date);

math类

Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round();

集合

集合与数组不同的地方在于,集合是动态增长的,但是数组长度是固定的,如果需要扩展数组,需要新建一个数组再把老数组拷贝过来。
集合框架的两个根接口,Collection和Map。
Collection的子接口有List序列、Queue、Set集,它们对应的几个常用实现类是ArrayList、LinkedList、HashSet。
Map的重要实现类是HashMap。

0 0
原创粉丝点击