Java基本知识笔记

关于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包装类对象,值为8
Double 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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值