动力节点—day06
常用类
- String
- String表示字符串类型,属于引用数据类型,不属于基本数据类型
- 在Java中随便使用双引号括起来的都是String对象,例如“abc”、“def”,“hello world!”,这是三个String对象
- Java中规定,双引号括起来的字符串,是不可变的,也就是说“abc”,从出生到最终死亡,都是可不变的
- 在JDK中双引号括起来的字符串,”abc“、”def“都是存储在字符串常量池中,因为字符串在实际的开发中使用太频繁了,放在常量池中,可以提高效率
s1创建了1个对象,s2创建了2个对象,s3创建了1个对象
比较字符串时,用==不保险,应该用equals ,因为String已经重写了equal

- 关于String类的几个常用构造方法
- 第一个:String s=new String(" ");
- 第二个:String s=" ";最常用
- 第三个:String s=new String(char数组);
- 第四个:String s=new String(char数组,起始下标,长度);
- 第五个:String s=new String(byte数组);
- 第六个:String s=new String(byte数组,起始下标,长度);
- String类的charAt方法
- charAt(int index) 返回指定索引处的字符
- String类的compareTo方法
- 字符串大小的比较不能使用>、<,必须使用compareTo方法
- String类的contains方法
- 用于判断字符串是否包含了某个子字符串
- String类的endsWith方法
- 判断当前字符串是否以某个字符串结尾
- String类的startsWith方法
- 判断当前字符串是否以某个字符串开始
- String类的equals方法
- 用于判断两个字符串是否相等,不能使用双等号
- String类的equalsIgnoreCase方法
- 判断两个字符串是否相等,忽略大小写
- String类的getBytes方法
- 将字符串转换成byte数组
- String类的indexOf方法
- 判断指定子字符串在当前字符串中第一次出现处的索引
- String类的isEmpty方法
- 判断字符串是否为空:”“.isEmpty();—— true " ".isEmpty();—— false
- 判断数组长度是length属性,判断字符串长度是length()方法
- String类的lastIndexOf方法
- 判断指定字符串在当前字符串最后一次出现的索引
- String 类的replace(char oldChar,char newChar)
- 通过新字符,替换旧的字符
- String 类的replace(CharSequence target,CharSequence replacement)
- 通过新字符串,替换旧的字符串
- String类的split方法
- 用于切割字符串,返回字符串数组类型
- 截取字符串
- “”.subString(7); substring(7,10)7包含,但10不包含
- char[] toCharArray()
- 将字符串转换成char数组
- String类的toLowerCase(toUpperCase)方法
- 将字符串数组转化成小写(大写)
- String类的trim方法
- 去除字符串前后空白
- String类只有一个方法是静态的,不需要new对象,这个方法叫valueOf
- 将非字符串,转换成字符串
- printIn方法会将值通过valueOf方法转换为字符串类型的,然后调用字符串重写的toString方法进行输出
String类的substring方法
- StringBuffer
- 因为java的字符串是不可变的,每一次拼接都会产生新的字符串,这样会占用大量的 方法区内存,造成内存空间的浪费,“abc”,“bc”,“abcbc”就创建了3个字符串对象
- 所以以后需要进行大量的字符串拼接操作,建议使用JDK自带的
- java.lang.StringBuffer
- java.lang.StringBuilder
- StringBuffer中的方法都有:synchronized关键字修饰,表示StringBuffer在多线程环境下运行时时安全的
- StringBuilder中的方法没有:synchronized关键字修饰,表示StringBuilder在多线程环境下运行时时不安全的
- String是不可变的,StringBuffer和StringBuilder是可变的,因为虽然底层都是一个byte类型的数组,但是String用final关键字修饰了,所以指向一个数组之后就不能再指向别的数组了,并且StringBuffer/StringBuilder的初始化容量是16,当存满之后会自动扩容,底层调用了数组拷贝的方法,适合字符串的频繁拼接操作
- 基础类型对应的8个包装类
- 可能有这种需求,调用一个方法需要传递一个数字进去,但是参数是Object类型,但数字属于基本数据类型,这时候就可以传一个包装类进去
- Java中为8种基本数据类型又准备了8种包装类型,8种包装类属于引用数据类型,父类是Object
- 基本数据类型:byte、short、int、long、float、double、char
- 包装类型:java.lang.Byte(父类Number)、java.lang.Short(父类Number)、java.lang.Interger(父类Number)、java.lang.Long(父类Number)、java.lang.Float(父类Number)、java.lang.Double(父类Number)、java.lang.Boolean(父类Object)、java.lang.Character(父类Object)
- 八种包装类中,其中有六个都是数字对应的包装类,他们的父类都是Number,Number是一个抽象类,无法实例化对象
- 装箱:将基本数据类型转化成引用数据类型 拆箱:将引用数据类型转化成基本数据类型
- Number类中有这样的方法:
- byte byteValue()
- 作为一个
byte返回指定数字的值,这可能涉及舍入或截断。 - abstract double doubleValue()
- 作为一个
double返回指定数字的值,这可能涉及舍入。 - abstract float floatValue()
- 作为一个
float返回指定数字的值,这可能涉及舍入。 - abstract int intValue()
- 作为一个
int返回指定数字的值,这可能涉及舍入或截断。 - abstract long longValue()
- 作为一个
long返回指定数字的值,这可能涉及舍入或截断。 - short shortValue()
- 作为一个
short返回指定数字的值,这可能涉及舍入或截断。 - Integer类型的包装类的构造方法有两个
- Interger(int)
- Interger(String)
- 其余六种数字类型的包装类都类似
- 通过访问包装类来获取最大值和最小值(除了Boolean类型)
- Integer.MAX_VALUE——获取int的最大值
- Integer.MIN_VALUE——获取int类型的最小值
- JDK1.5之后支持自动装箱和自动拆箱
- Integer x=100;//自动装箱(Integer x=new Integer(100);)
- int y=x;//自动拆箱int y=x.IntValue(x);
Integer z=1000;
System.out.println(z+1);//发送了自动拆箱
结果1001自动拆箱的好处就是,方便编程
Integer integer=1000;
Integer integer2=1000;
System.out.println(integer==integer2);
结果falseinteger和integer2还是引用数据类型,只有发生+-*/等运算时才会发生自动拆箱
- java中为了提高程序的执行效率,将[-128,127]之间的所有包装对象提前创建好,放到了一个方法区的“整数型常量池”当中了,目的是只要用这个区间 的数据不需要再new了,直接从整数型常量池当中取出,双等号对于引用数据类型永远比较的都是地址,其实常量池就是方法区开辟的一片缓存,优点是:效率高,缺点是:耗费内存
Integer s1=128;
Integer s2=128;
System.out.println(s1==s2);//false
Integer s3=127;
Integer s4=127;
System.out.println(s3==s4);//true缓存机制要重视,大型项目中的重要优化手段就是:catch缓存机制
- Integer类静态方法parseInt(String)
- int retValue=Integer.parseInt("123");将字符串转换成int类型的变量
- 传入的字符串必须是数字类型的,否则发生NumberFormatException运行时异常
- 除了Character类型都有该方法

- 日期相关类
- java.util.Data
- Date nowTime=new Date();//获取系统当前时间,精确到毫秒,直接调用无参构造方法就行,toString方法被重写
- simpleDateFormat类是java.text包下的,专门负责日期格式化的
- yyyy 年(年是四位)
- MM月 (月是两位)
- dd 日
- HH时
- mm分
- ss秒
- SSS 毫秒(毫秒3位,最高999,1000毫秒代表1秒)
Date date=new Date();
//日期进行格式化
//simpleDateFormat类是java.text包下的,专门负责日期格式化的
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss SSS");
String string=simpleDateFormat.format(date);
System.out.println(string);2022-10-28 19:29:35 922
String time="2022-10-28 17:43:31 696";
Date date2=simpleDateFormat.parse(time);
System.out.println(time);2022-10-28 17:43:31 696
注意:字符串的日期格式要和SimpleDateFormat指定的日期格式要一样,不然会出现异常java.text.ParseException
- System.currentTimeMillis() 返回的是自1970年1月1日,到系统当前时间的总毫秒数
- 总结目前所学习的System类的方法、
- System.out out是System的成员变量,返回一个PrintStream类型的变量,然后调用该类的println方法
- System.exit(int) 终止Java虚拟机的运行
- System.currentTimeMillis(),返回的是自1970年1月1日,到系统当前时间的总毫秒数
- System.arrayCopy(),System.arraycopy(src, srcPos, dest, destPos, length);进行数组的赋值
- System.gc(),用来对堆中的垃圾进行回收
- 数字格式化
- java.text.DecimalFormat专门负责数字格式化的
- 数字的格式:#代表任意数字 ,代表千分位,.代表小数点,0代表不够时补零
- 处理高精度
- java.math.BigDecimal精度极高,专门用在财务软件中,double的精度还是不够
- Random
Random random=new Random();
int num=random.nextInt();
System.out.println(num);
random.nextInt(101),表示可以取到0-101之间的随机正整数,但不包括101
- Enum
- 枚举:一枚一枚可以列举出来的,才建议使用枚举类型
- 枚举编译之后也是生成class文件
- 枚举也是一种引用数据类型
- 枚举中的值可以看作是常量
- 结果只有两种情况,建议使用boolean类型,结果超过两种并且还是一枚一枚可以列举出来的,建议使用枚举
public enum enum2 {
SPRING,SUMMER,AUTUMN,WINTER
}switch (enum2.WINTER) {
case SPRING:
System.out.println("春天");
break;
case SUMMER:
System.out.println("春天");
break;
case AUTUMN:
System.out.println("春天");
break;
case WINTER:
System.out.println("春天");
break;
}String支持String、int,也支持枚举,低版本的JDK只支持String、int,高版本的JDK还支持枚举,byte、short、char也可以,因为支持自动类型转换
动力节点—day06的更多相关文章
- 分布式技术EJB3_分库架构 - 【动力节点官网】北京Java …
分布式技术EJB3_分库架构 - [动力节点官网]北京Java … http://www.bjpowernode.com/xiazai/2220.html <程序天下--EJB JPA数据库持久 ...
- 001_动力节点_SpringMVC4_SpringMVC简介
1.视频的下载地址是 下载地址:百度云盘 链接:http://pan.baidu.com/s/1ge58XW3 密码:yd5jhttp://www.java1234.com/a/javaziliao/ ...
- 动力节点Java培训告诉你Java线程的多功能用法
现在的java开发可谓是八仙过海各显神通啊!遥想当下各种编程语言萎靡不振,而我Java开发异军突起,以狂风扫落叶之态,作为Java培训行业的黄埔军校,为了守护Java之未来,特意总结了一些不被人所熟知 ...
- [Java语言] 《struts2和spring MVC》的区别_动力节点
1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...
- 动力节点 mysql 郭鑫 34道经典的面试题三
1.第十五题 15.列出受雇日期早于其直接上级的所有员工编号.姓名.部门名称 思路一:第一步将emp a看成员工表,将emp b 看成领导表,员工表的mgr字段应该等于领导表的主键字段 mysql&g ...
- 动力节点 mysql 郭鑫 34道经典的面试题二
13.有3个表S(学生表),C(课程表),SC(学生选课表) S(SNO,SNAME)代表(学号,姓名) C(CNO,CNAME,CTEACHER)代表(课号,课名,教师) SC(SNO,CNO,SC ...
- 动力节点 mysql 郭鑫 34道经典的面试题
DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `DEPTNO` int(2) NOT NULL COMMENT '部门编号', `DNAME` ...
- Java学习day06
[方法] [可以在不是main的方法中调用其他方法] [方法调用时的参数问题] [方法调用] [上面定义了两个class,实际上不推荐] [递归调用] [方法的返回值] [retu ...
- Java Web 学习路线
实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...
- Java编程中的美好
java程序员如何写出"优美"代码,动力节点告诉你怎么办: 1.注释尽可能全面 对于方法的注释应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述:类的注释应该包含类的功能说 ...
随机推荐
- 13-ORM-更新&删除
一.更改单个数据 修改单个实体的某些字段 1.查: - 通过get()得到要修改的实体对象 2.改: - 通过对象属性的=的方式修改数据 3.保存 - 通过对象.save()保存数据 二.批量 ...
- 基于FPGA的SATA3.0主机控制器IP
SATA3.0 Host Controller IP SATA3.0 Host IP不仅实现了SATA协议的PHY(物理层).Link(链路层)和TRN(传输层),并且实现了CMD(命令层)和APP( ...
- 关系抽取--Relation Extraction: Perspective from Convolutional Neural Networks
一种使用CNN来提取特征的模型,通过CNN的filter的大小来获得不同的n-gram的信息,模型的结构如下所示: 输入 输入使用word2vec的50维词向量,加上 position embeddi ...
- Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo
前两篇文章分享了基于 vite3 vue3 的组件库基础工程 vue3-component-library-archetype 和用于快速创建该工程的工具 yyg-cli,但在中大型的企业级项目中,通 ...
- 图扑软件 3D 组态编辑器,低代码零代码构建数字孪生工厂
行业背景 随着中国制造 2025 计划的提出,新一轮的工业改革拉开序幕.大数据积累的指数级增长为智能商业爆发奠定了良好的基础,传统制造业高污染.高能耗.低效率的生产模式已不符合现代工业要求. 图扑拖拽 ...
- golang实现一个简单的http代理
代理是网络中的一项重要的功能,其功能就是代理网络用户去取得网络信息.形象的说:它是网络信息的中转站,对于客户端来说,代理扮演的是服务器的角色,接收请求报文,返回响应报文:对于web服务器来说,代理扮演 ...
- 方法的重载(Overload)+ println重载
方法的重载(Overload) package cn.day01; /*方法的重载(Overload):多个方法的名称一样,但是参数列表不一样. * 好处:只需要记住唯一一个方法名称,就可以实现类似多 ...
- 基于python的数学建模---机场航线设计
数据集 拿走: 链接:https://pan.baidu.com/s/1zH5xhpEmx2_u5qO9W4gCkw 提取码:2wl5 数据集来自航空业,有一些关于航线的基本信息.有某段旅程的起始点和 ...
- npm卸载"Tracker idealTree already exists"
问题 使用npm卸载babel插件的时候执行命令npm uninstall babel...出现如下报错 npm ERR! Tracker "idealTree" already ...
- 6 STL-vector
重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦! 生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 写在前面,本篇章主要介绍S ...