超详细的Java知识点路线图


前言

Java提供了强大的类库,帮助开发者快速完成开发任务,这也是其叱咤风云20多年的一个重要原因。我们现在就学习一些Java中常用的类。
本文将介绍:

  • 字符串相关:String、 StringBuffer、 StringBuilder
  • 包装类:Integer等
  • 日期相关: Date、 Calendar、 SimpleDateFormat
  • 其他:Math、Random、Runtime、System

字符串相关

Java提供了处理字符串的几个类:String、 StringBuffer、 StringBuilder,其中最常用的就是String类

String类

创建方式

创建方式1:赋值常量

String str = "hello";

使用双引号括起来的内容叫字符串常量值,字符串常量值分配在方法区的常量池中。
常量池的好处:

  1. 节约内存,反复使用,不需要重新分配
  2. 性能高,直接调用,省去创建对象的时间

面试题1:

String name1 = "zhangsan";
String name2 = "zhangsan";
System.out.println(name1==name2);             输出true
System.out.println(name1.equals(name2));    输出true

分析:

  1. equals是用于比较String的内容,==用于比较String对象的内存地址
  2. name1=“zhangsan”,在常量池中创建"zhangsan"
  3. name2=“zhangsan”,会把池中常量的地址直接赋值给name2

面试题2:

String name1 = "zhangsan";
String name2 = "zha"+"ng"+"san";
System.out.println(name1==name2);  输出true

分析: 如果加号两边都是字符串常量,JVM会到常量池中直接查找连接后的结果。

面试题3:

String name1 = "zhangsan";
String name2 = "zhang";
String name3 = name2 + "san";
System.out.println(name1==name3);  输出false

分析:如果加号两边出现了变量,就不会在常量池中,而是在堆区创建对象

创建方式2:使用new创建对象

String name = new String("zhangsan");

使用new都会在堆中创建新的对象

其他创建方式:
通过字节数组创建字符串

String(byte[] bytes,String charset)
bytes       字节数组
charset     字符编码,一般使用UTF-8

通过字符数组创建字符串

String(char[] chars)
如:
char[] chars = {‘z’,'h','a','n','g'};
String name = new String(chars);

字符串的不变性

/** The value is used for character storage. */
private final char value[];

通过String类的源码可知,字符串的内容保存在字符数组中,该数组是final的,一旦初始化后就不可修改。
如果要修改字符串,就会创建新的对象,频繁修改会大量消耗内存空间和时间。
如:

String str = "hello";
str += "world";

+=运算在底层执行的是:

str = new StringBuilder("hello").append("world").toString();

String常用方法

获得字符串长度

int length()

获得子字符串出现的位置

int indexOf(String s)

在字符串中查找子字符串第一次出现的位置,没找到返回-1;

int indexOf(String s,int start)

指定了开始查找的位置

int lastIndexOf(String s)

截取字符串

String substring(int start,int end)
String substring(int start)

替换

String replace(String oldStr,String newStr)

比较字符串内容

boolean equals(String s)             是否完全相同
boolean equalsIgnoreCase(String s)  忽略大小写进行比较
boolean startsWith(String s)        判断字符串是否以某字符串开头
boolean endsWith(String s)          判断字符串是否以某字符串结尾
int compareTo(String s)             比较大小,返回正数(大于)、负数(小于)、0(相等)

大小写转换

String toUpperCase() 大写
String toLowerCase() 小写

去左右空格

String trim()

拆分字符串

String[] split(String separator)
注意:某些特殊符号分割符需要进行转义,如:\\+

StringBuilder类

如果字符串变量需要频繁修改,就会创建大量字符串对象,大量消耗内存空间。
为了解决这个问题,可以使用StringBuilder。

String和StringBuilder的区别:

  • String的字符串是不可修改,如果修改会创建新字符串,浪费内存。
  • StringBuilder的字符串是可以修改的,不会创建新字符串。

创建方法

创建空值的对象
StringBuilder strb = new StringBuilder();
创建有默认值的对象
StringBuilder strb = new StringBuilder("默认值");

StringBuilder常用方法

转换为String

String toString()

追加

StringBuilder append(String str)

替换

StringBuilder replace(int start,int end,String newS)

插入

StringBuilder insert(int offset,String s)

删除

StringBuilder delete(int start,int end)

反转

StringBuilder reverse()

StringBuffer类

StringBuffer的特点和StringBuilder相似,都是在自身的数组上进行的修改,常用方法也一样。
不同点:

  1. StringBuffer的方法是线程安全的,StringBuilder是非线程安全的
  2. StringBuilder的执行效率高于StringBuffer

包装类

Java中的8种基本数据类型不是引用类型,也不能创建对象,这就违背了Java是完全面向对象语言这一前提。Java推出8个包装类,把基本类型包装成对象。

包装类是什么

包装类包装了8种基本数据类型,把基本数据类型看做对象进行处理

基本类型 包装类
int Integer
byte Byte
short Short
long Long
float Float
double Double
char Character
boolean Boolean

创建方法

Integer num1 = 1000;
或
Integer num2 = new Integer(1000);

面试题:下面代码的结果是:

Integer n1 = 100;
Integer n2 = 100;
System.out.println(n1 == n2); true
Integer n3 = 1000;
Integer n4 = 1000;
System.out.println(n3 == n4); false

分析:整数常量也可以保存到常量池中,取值范围是byte范围(-128~127),超过此范围不存常量池,在堆创建对象

装箱和拆箱

装箱与拆箱是基本数据类型和引用类型的相互转换。

  1. 装箱:基本数据类型转换为引用类型
    如: Integer n = 200;
  2. 拆箱:引用类型转换为基本数据类型
    如:Integer n = 200;
    int m = n; //拆箱

字符串与基本类型的转换

字符串转换为int类型

String s = "1234";
int num = Integer.parseInt(s);

其他类型:

Float.parseFloat(字符串)   转换为Float
Double.parseDouble(字符串) 转换为Double
...

int类型转换为字符串

String s = String.valueOf(num);

int num = 20;
String s = "" + num;

日期和时间处理

java.util包下面提供了一些时间处理相关的API。

Date类

处理日期时间
创建方法1:

Date date = new Date(); 获得当前的时间

创建方法2:

Date date = new Date(long); 指定时间的1900-1-1到现在的毫秒数

常用方法

int getYear()            获得年
int getMonth()          获得月
int getDate()           获得天
int getHours()          获得小时
int getMinutes()        获得分钟
int getSeconds()        获得分钟
void setYear(int year)  设置年
...

Calendar 类

日历类可以获得和修改日期的某个部分
创建Calendar对象

Calendar calendar = Calendar.getInstance();

常用方法:

get(日期类型)            获得日期的某个部分
Calendar.YEAR
Calendar.MONTH          月份从0开始
....
set(日期类型,数值)      设置日期的某个部分
add(日期类型,数值)      实现日期某个部分的追溯

SimpleDateFormat类

对日期进行格式化
创建对象

SimpleDateFormat sdf = new SimpleDateFormat("日期格式字符串");
日期格式字符串,如:"yyyy-MM-dd hh:mm:ss"
yyyy    代表4位的年份
MM      代表2位的月份
dd      代表2位的日期
hh/HH   12小时制/24小时制
mm      代表分钟
ss      代表秒钟
a       代表AM/PM

将日期进行格式化

String format(Date对象);

将字符串转换为日期

Date parse(String对象);

其他常用类

Math类

数学运算

作用 用法
求绝对值 Math.abs(-10) --> 10
四舍五入取整 Math.round(2.6) --> 3
求两个数最大值 Math.max(2,10) --> 10
求两个数最小值 Math.min(2,10) --> 2
随机数 Math.random() --> 0 ~ 1之间任意小数
求平方根 Math.sqrt(16) – > 4
求幂 Math.pow(2,3) – > 8

Random类

获得随机数

Random random = new Random();
random.nextInt(100); //0 ~ 100间随机整数

Runtime类

系统运行时,获得和系统有关的信息
Runtime rt = Runtime.getRuntime();

作用 用法
freeMemory() 获得系统空闲内存数
totalMemory() 获得总内存数
availableProcessors() 获得处理器个数
gc() 调用垃圾收集器
exec(String cmd) 调用系统程序
exit(int status) 退出系统

PS:GC(Garbege Collector)垃圾收集器,JVM会单独开一线程,定时扫描内存中没有使用的对象。
GC的启动没有特定的时间,如果想唤醒GC,可以调用gc方法。

String s = new String("xxxx"); //新的String对象
s = null; //没有引用指向的String对象会被回收

System类

作用 用法
currentTimeMillis() 获得当前系统时间的毫秒数
gc() 调用垃圾收集器
exit(int status) 退出系统

结束

作业时间到:

  1. 简述String的主要方法有哪些
  2. 简述String和StringBuilder 的区别
  3. 简述StringBuilder和StringBuffer的区别
  4. 输入邮箱和密码,进行登录验证:
    1)判断邮箱和密码是否为空
    2)判断密码不能小于6位
    3)判断@的位置在.之前
    4)判断邮箱为zhangsan@163.com,密码为666666就登录成功
    5)截取@前面的用户名,输出:欢迎, xxx
  5. 输入一个字符串,包含多个单词,单词之间以空格分隔;
    要求将所有单词连接起来,并且首字母大写
    如:输入 good good study
    获得:GoodGoodStudy

大家如果需要学习其他Java知识点,戳这里 超详细的Java知识点汇总

Java基础15 Java常用类相关推荐

  1. Java基础篇:常用类

    文章目录 1.字符串相关的类 1.1 String类及常用方法 String的特性 String对象的创建 字符串对象是如何存储的 String使用陷阱 String常用方法 1.2 StringBu ...

  2. Java基础篇之常用类(1)

    目录 常用API: Scanner: object类: to String()方法: equals()方法: String类: String类创建对象的特点: String练习之模拟用户登录: Str ...

  3. Java基础---API概述---常用类(Object类/String类)---equals和==

    API概述 API:application programming interface,应用程序编程接口 用于规定方法名称的规则集合,定义了方法的修饰符.返回值类型.方法的名称.方法的参数列表.方法的 ...

  4. Java并发包中常用类

    Java并发包中常用类小结(一) 从JDK1.5以后,Java为我们引入了一个并发包,用于解决实际开发中经常用到的并发问题,那我们今天就来简单看一下相关的一些常见类的使用情况. 1.Concurren ...

  5. Java并发包中常用类小结(一)

                                   Java并发包中常用类小结(一) 从JDK1.5以后,Java为我们引入了一个并发包,用于解决实际开发中经常用到的并发问题,那我们今天就来 ...

  6. Java基础语法68-抽象类练习

    Java基础语法68-抽象类练习 编写工资系统,实现不同类型员工(多态)的按月发放工资.如果当月出现某个 Employee对象的生日,则将该雇员的工资增加100元. 实验说明: (1) 定义一个Emp ...

  7. java基础总结-java技术栈快速复习

    java基础 java基础概念 java概述和语言背景 java语言是没有sun公司(Stanford University Network:斯坦福大学网络)在1995年推出的计算机语言 java之父 ...

  8. 黑马程序员:Java基础总结----Java语言编程规范

       黑马程序员:Java基础总结        Java语言编程规范:参考自SUN公司文档  ASP.Net+Android+IO开发..Net培训.期待与您交流!  I.   排版规范 A.  规 ...

  9. java基础之java类型

    系列文章目录 java基础之java类型 文章目录 系列文章目录 基本类型 自动类型提升 引用类型 基本类型 整型 Byte 8位 -2^7~2^7-1 默认值0 Short 16位 -2^15~2^ ...

  10. Java 基础学习-Java语言概述

    Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...

最新文章

  1. [工具推荐]用了TrueCrypt 再无难掩之隐
  2. 接口转发和重定向区别(二)
  3. 虚幻引擎UE4-命令行使用的一些技巧
  4. uo和o的区别和用法_汉语拼音中,o与uo有什么区别
  5. MVC5中EF6 Code First启动慢及间隙变慢的一些优化处理
  6. [BUUCTF-pwn]——xman_2019_format
  7. Please install [clang](http://clang.llvm.org/) or check configuration `clang.executable`
  8. 盘点十个最伟大的公式,1+1=2仅排到了第七
  9. 马云:未来30年大数据时代,如何避免成为穷人?
  10. 常用PHP数组函数总结
  11. 详解MRS CDL整体架构设计
  12. 开源资产管理系统_部署开源夜莺运维监控平台V3版本
  13. UVA 11806 Cheerleaders (容斥原理)
  14. 如何用一头死驴赚到998元
  15. 游戏筑基开发之广度优先搜索算法(C语言)
  16. h5网站服务器配置,h5的web服务器配置
  17. QT绘制实时动态曲线——qcustomplot使用(一)
  18. MAC版SecureCRT+SecureFX破解
  19. 用什么软件测试内存条稳定,如何检测内存条的好坏有什么软件
  20. 小米air2se耳机只有一边有声音怎么办_不到200元 小米蓝牙耳机Air2 SE是真香党的选择吗?...

热门文章

  1. Java权限管理(授权与认证)
  2. 从技术上分析铁路售票系统
  3. 辽宁省沈阳市谷歌高清卫星地图下载
  4. Unity中音效插件
  5. 手工清除severe.exe病毒
  6. Thinkpad常见问题大全(转载联想工程师博客)
  7. usb转rs232驱动无效,已经电脑自动扫描检测硬件改动.设备无法运行错误代码10
  8. 第二章 Maven的安装和配置
  9. 网站开发执行文档(页面界面和功能说明文档)编写方法
  10. 6个常用的Python编程开发工具