Categories
未分类

Java 中 Date 和 LocalDateTime 互相转换

LocalDateTime 转换为 Date 看示例: 输出结果: 简单分析下: 先调用 LocalDateTime 的 atZone 方法(参数为系统默认时区),获取带时区信息的 ZonedDateTime 时间对象,然后转换为 Instant 瞬时对象。最后通过 Date 的 from 方法创建 Date 对象。 Date 转换为 LocalDateTime 看示例: 输出结果: 简单分析下: 先转换 Date 为 Instant 瞬时对象,再调用 LocalDateTime 的 ofInstant 方法(第二个参数为系统默认时区)即可。 其它 完整源码,请参阅:LocalDatetimeAndDate.java。 (全文完) 扫码阅读和分享

Categories
未分类

PHP 8 新特性:从构造函数直接声明属性

在 PHP 8 之前,自定义的类中,对于一个属性的初始化和使用过程是这样的。如下: 在 PHP 8 之后,我们可以直接在构造函数中将入参声明为类属性,并指明访问权限和变量类型。如下: 通过代码“__construct(private string $name)”,声明了属性变量 name,指明访问权限为 private,类型为 string。当通过构造函数构建实例时,直接对 name 进行了赋值。 (完) 扫码阅读和分享

Categories
未分类

Java 类成员四种访问级别在不同位置下的可见性

Java 里有四种访问控制级别,分别为:public、protected、default 和 private。default 为默认级别。 如下表,展示了四种访问级别在不同位置下的可见性。 位置\访问级别(可见性) public protected default private 当前类 可见 可见 可见 可见 当前包(含包内的子类) 可见 可见 可见 可见 子类(包外的子类) 可见 可见(仅继承) 不可见 不可见 包外(不含子类) 可见 不可见 不可见 不可见 (全文完) 扫码阅读和分享

Categories
未分类

Macbook Pro 2017 款 13 寸板载内存和硬盘升级小记

引言 笔者有一个 13 寸苹果本,主要放在公司做开发用。最近顺利地进行了升级,和大家分享一下。 笔记本是 MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports),型号为 A1708 EMC 3164(见笔记本背面),13 寸的低配版,8 G 内存和 128 G 硬盘。技术规则见:https://support.apple.com/kb/SP754?locale=zh_CN。 苹果为追求利润最大化 🐶 ,凭借不同的内存和硬盘配置带来的体验差别,来实现成本最低的价格歧视(见)。同时 2018 款及后续笔记本都采用了板载内存和板载硬盘(均带 Touchbar),消费者几乎不能自己升级。笔者的这一款有点例外,属于最后一款可拆卸硬盘的。但内存属于板载内存,所以升级板载内存是个难点。 升级前 升级前,内存为主板集成的 8G,如下。 硬盘为 128G,如下。 升级过程 内存升级 对于内存,从 B 站上找到一个专门升级板载内存笔记本的 UP 主。笔者找到他的淘宝店,直接下单拍了升级内存的服务,花费 865 元。我把自己的硬盘拆卸下来,邮寄过去,对方升级完成后,回寄回来。升级挺快,不算邮寄时间,两天搞定。 硬盘升级 硬盘的选择 经查,一共有三种硬盘可供选择:原装拆机硬盘、代工硬盘、转接卡硬盘。 原装拆机硬盘,最为稳定,同容量价格最贵。考虑到需要稳定且 256G 已完全满足需求,故笔者选择这个。 代工硬盘,淘宝商家有售。兼容性比转接卡硬盘好些。 转接卡硬盘,即通过专门的 A1708 转接卡配合 NVMe 固态硬盘。可能有兼容性问题,价格也最便宜。 重点:对于原装拆机硬盘,较早生产的硬盘可能存在故障的情况,需要注意,可以通过查询序列号判断是否存在问题。详见:13 […]

Categories
未分类

笔记:Java 格式化输出

本文将介绍 Java 中的格式化输出涉及的类、方法及其用法。 在 Java 中可使用 System.out.print 或 System.out.println,将参数输出到控制台。System.out.printf,可以先将参数进行格式化,然后输出到控制台。 PrintStream 类 如上,System 类的常量 out 是一个 PrintStream 类实例,其输出功能是调用的 PrintStream 的方法。 print 方法和 println 方法 print 用于直接输出参数,比如: println 同时在输出末尾,增加换行符,比如: printf 方法和 format 方法 printf 用于将参数按照指定格式输出,比如: format 方法和 printf 方法一致,因为其实 printf 内部调用的 format。 Formatter 类 Formatter 类是用于格式化参数的解释器,类似于 C 语言的 printf 功能,实现了格式的解析。PrintStream 类的 format 方法,其内部调用就是 Formatter 类的 format 方法。所以掌握 […]

Categories
未分类

笔记:Java Scanner 类用法

介绍 在 Java 中,Scanner 类结合标准输入流 System.in,可以从 Console 中获取输入数据。 Scanner 类文档,见:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Scanner.html,System.in 说明,见:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/System.html。 示例 先看例子: 输出: 说明 通过 new Scanner(System.in) 构建一个扫描器,处理标准输入流。 nextLine() 用来获取输入的一行字符。 nextInt() 用来获取输入的一个整型。 next() 用来获取输入的一个词语,词语之间用空格分隔。hasNext() 可以用来判断是否存在下一个词语,此方法会阻塞程序。按 Ctrl + D 可终止程序。 (全文完) 扫码阅读和分享

Categories
未分类

笔记:Java 字符串

一、基础 定义 Java 字符串是一组 Unicode 字符序列,是类 String 的实例。文档见 https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html 。 初始化 二、用法 获取子串 原型: 例子: 直接拼接字符串 指定连接符拼接字符串 判断字符串相等 使用 StringBuilder 类构建字符串 使用 StringBuilder 更加灵活,示例: 输出: 三、其它 特性 字符串 String 对象的内容不支持修改。比如直接修改其中一个字符。 空字符串 指长度为 0 的字符串。 Null 字符串 判断字符串是否为 Null 字符串。 (全文完) 扫码阅读和分享

Categories
未分类

笔记:Java 运算符

算数运算符 +、-、*、/ 分别表示加、减、乘、除运算;% 表示求余(取模)。 两个整数相除时,采用整数除法,商为整数。 10 / 3; // 值为 3 两个整数求余。 10 % 3; // 值为 1 当整数被0 除时,则直接抛异常。 10 / 0; Exception in thread “main” java.lang.ArithmeticException: / by zero at variable.main(variable.java:5) 非整数相除时,采用浮点除法。 10 / 2.5; // 值为 4.0 10 / 3.5; // 值为 2.857142857142857 当浮点数被 0 除时,结果为无穷大。 (6.6 / 0) == Double.POSITIVE_INFINITY; // […]

Categories
未分类

笔记:Java 数值类型转换

自动类型转换 在 Java 语言中操作数值时,满足自动转换关系时,数值可自动转换为目标类型。 比如: 自动转换关系,如下: byte -> short -> intchar -> intint -> longint -> float(损失精度)int -> doublelong -> float(损失精度)long -> double(损失精度) 二元运算时自动转换规则 两个不同类型数值之间进行二元运算时,会先自动转换时为同一种类型。具体如下: 其中一个为 double 时,优先转换为 double。否则,其中一个为 float 时,优先转换为 float。否则,其中一个为 long 时,优先转换为 long。否则,都转换为 int 类型。 比如: 强制类型转换 当转换类型时,不满足自动转换条件时,可进行强制类型转换。语法格式是,在预转换的变量前添加一对圆括号,括号内指明目标类型。 其它转换情况 bool 类型转换 当需要将 bool 类型转换为数值时,可以使用如下表达: (全文完) 扫码阅读和分享

Categories
未分类

笔记:Java Math 数学函数

静态方法 Math.sqrt,计算平方根。 Math.sqrt(4); // 结果为 2.0 静态方法 Math.pow,进行幂运算,即指数运算,如下求 2 的 8 次方。 Math.pow(2, 8); // 结果为 256.0 静态方法 Math.floorMod,取模运算,可以处理被除数为负的情况。 -1 % 3; // 结果为 -1,不符合预期 Math.floorMod(-1, 3); // 结果为 2 Math 定义的常量。 Math.PI; // 圆周率 Math.E; // 常数 e 扫码阅读和分享