《疯狂java讲义》读书笔记(三):Java基础类库

《疯狂java讲义》读书笔记(三):Java基础类库

正则表达式和国际化等方面没有涉及。

运行Java程序的参数

​ 最近刷题也遇到了一两个和它相关的题目。在这里也花一点篇幅记录下。main()方法是每一个Java程序的入口。public static void main(String[] args){...}

​ 值得关注的点有三个。首先是为什么使用public修饰符 ,Java类由JVM调用,为了让JVM可以自由调用这个main方法,所以使用public修饰符把这个方法暴露出来。JVM调用这个主方法的时候,不会先调用该主类的对象,然后通过对象来调用该主方法,JVM直接通过该类来调用主方法,因此使用static修饰该主方法。我们注意到还有一个void返回值,因为主方法被JVM调用,该方法的返回值将返回给JVM,这没有什么异议,因此没有返回值。

​ 既然main方法是由JVM调用的,那么args参数肯定也是JVM负责赋值的咯。一般来说JVM是不知道怎么给args赋值的,但是如果我们用java Test ArgsTest命令运行一个Test类,那么ArgsTest就是一个参数。也就是说如果允许Java程序时在类名后紧跟一个或多个字符串,JVM就会把这些字符串依次赋值给args数组元素,

使用Scanner获取键盘输入

​ Scanner可以从文件、输入流、字符串中解析数据。主要提供了两个方法扫描输入:hasNextXxx()nextXxx()

​ 做默认情况下,使用空格、Tab、回车作为输入项之间的分隔符。如果想让程序把键盘的每行输入当成一个输入项忽略空格和Tab的话,可以使用:

boolean hasNextLine():返回输入源中是否还有下一行
String nextLine():返回输入源中下一行的字符串

​ 不过也可以设置分隔符,使用useDelimiter(String pattern)。

String、StringBuilder、StringBuffer

​ String类是不可变类,一旦一个String对象被创建之后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。

​ StringBuffer对象则代表一个字符序列课表的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。

​ 至于这个StringBuilder其实和StringBuffer类似,两个类的构造器和方法也基本相同,不同的是,StringBuffer是线程安全的。如果创建一个内容可变的字符串对象,优先考虑StringBuilder。

​ 这三者都实现了CharSequence接口。

格式化时间

​ 比较常用的是SimpleDateFormat,在这仅仅举个例子,具体的使用还是看API文档。

Date d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("Gyyyy年中第D天");
//将d格式化
String dateStr=sdf.format(d);

其他的一些零碎

1.BigDecimal类

​ Java中的double类型在算数运算的时候很容易发生精度丢失这种现象。BigDecimal类可以解决这个问题。在该类的BigDecimal(double val)构造器的说明中,不推荐使用该种构造器,是因为使用的时候有不可预知性,这就导致了我们使用这种构造器创建对象的时候,它的值可能和预期不符,是一个极度接近val的数字。

​ 使用BigDecimal(String val)的话,结果就是可知的。new BigDecimal(“0.1”),那么正好就会等于预期的0.1,因此推荐使用基于String的构造器。

​ 如果必须使用double浮点数作为BigDecimal构造器的参数,可以通过BigDecimal.valueOf(double val)静态方法来创建。

2.ThreadLocalRandom和Random

​ ThreadLocalRandom是Random的增强版,并发访问情况下,前者可以减少多线程资源竞争。

ThreadLocalRandom r=ThreadLocalRandom.current();
//生成一个1~20的伪随机整数
int val1=r.nextInt(1,20);

​ 只要两个Ramdom对象的种子相同,而且方法调用顺序也相同,他们就会产生相同的数字序列。也就是说Random产生的数字是伪随机的。为了避免这现象,推荐使用当前时间作为Random的种子。

Random rand=new Random(System.currentTimeMills());

3.关于时间

​ Date类目前已经淘汰了,主要使用Calendar类。这个Calendar类是一个抽象类,不能用构造器创建,它提供了几个静态getInstance()方法来获取对象。这些方法根据TimeZone、Locale来获取特定的Calendar。

​ 在Java8中新增了java.time包,列几个常用的类。

​ (1)LocalDate:代表不带时区的日期,如2019-12-22.通过now()方法获取当前日期。

​ (2)LocalTime:不带时区的时间,如22:15:30.通过now()方法获取当前时间。

​ (3)LocalDateTime:直接举例子了,如2019-12-22T22:15:30.通过now()方法获取当前日期和时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值