Boolean的构造函数,你懂的

本文深入探讨 Java 中 Boolean 类的构造函数及 toBoolean 方法的实现细节。指出仅当字符串 name 小写等于 'true' 时返回 true 的常见误解,并通过示例代码详细解释。

学java不看源码是上不了一个等级的!

=================

先搞一段关键代码,看过的大牛请移步!

private static boolean toBoolean(String name) {
        return ((name != null) && name.equalsIgnoreCase("true"));
    }

 Boolean 有两个构造函数,

public Boolean(boolean value) {...}
public Boolean(String s){...}

 上面构造函数,你懂的。

下面的那个,或许用过。记忆模模糊糊。

实现细节: this(toBoolean(name));太简单不过了,但是不能忽略细节,俗话说:细节决定成败。

 

回头看看关键代码:只有在name的小写为“true”时才返回true;

 

这句话是错的。理解错误!!感谢 lzqlawrence 的提醒 。

soga ....

 

 

 

在 JavaScript 中,除了 `Number` 和 `Boolean`,还有其他一些内置构造函数。这些构造函数可以用来创建对象或进行类型转换。以下是一些常见的内置构造函数: ### 回答问题 #### 1. 常见的内置构造函数 以下是一些常用的 JavaScript 内置构造函数: - **`String`**:用于创建字符串对象或将值转换为字符串。 - **`Array`**:用于创建数组对象。 - **`Object`**:用于创建普通对象。 - **`Function`**:用于动态创建函数。 - **`Date`**:用于处理日期和时间。 - **`RegExp`**:用于创建正则表达式对象。 - **`Symbol`**(ES6 引入):用于创建唯一的符号值。 - **`Map`** 和 **`Set`**(ES6 引入):分别用于创建键值对集合和唯一值集合。 - **`Error`** 及其子类(如 `SyntaxError`, `TypeError` 等):用于表示错误。 #### 2. 示例代码 以下是一些内置构造函数的使用示例: ```javascript // String 构造函数 const str = new String("hello"); // 创建一个字符串对象 console.log(typeof str); // 输出: "object" console.log(str.valueOf()); // 转换为原始字符串: "hello" // Array 构造函数 const arr = new Array(1, 2, 3); // 创建一个数组 console.log(arr); // 输出: [1, 2, 3] // Object 构造函数 const obj = new Object(); // 创建一个空对象 obj.name = "Alice"; console.log(obj); // 输出: { name: "Alice" } // Function 构造函数 const func = new Function("a", "b", "return a + b;"); console.log(func(2, 3)); // 输出: 5 // Date 构造函数 const date = new Date(); // 创建当前日期和时间 console.log(date); // RegExp 构造函数 const regex = new RegExp("\\d+"); // 创建一个匹配数字的正则表达式 console.log(regex.test("123")); // 输出: true // Symbol 构造函数 const sym = Symbol("description"); console.log(typeof sym); // 输出: "symbol" // Map 构造函数 const map = new Map(); map.set("key", "value"); console.log(map.get("key")); // 输出: "value" // Set 构造函数 const set = new Set([1, 2, 3, 3]); console.log(set); // 输出: Set { 1, 2, 3 } // Error 构造函数 try { throw new Error("Something went wrong"); } catch (e) { console.log(e.message); // 输出: "Something went wrong" } ``` --- ### 给出解释 1. **`String`** - 使用 `new String()` 可以创建一个字符串对象,但通常推荐直接使用字符串字面量(如 `"hello"`),因为字符串对象在某些情况下可能会导致意外行为。 - 如果只是想进行类型转换,可以直接调用 `String(value)`,它会返回一个原始类型的字符串。 2. **`Array`** - 使用 `new Array()` 创建数组时要小心,如果只传入一个数字参数,它会被解释为数组的长度,而不是元素值。例如:`new Array(3)` 创建的是一个长度为 3 的空数组,而不是 `[3]`。 3. **`Object`** - 使用 `new Object()` 创建的对象是一个普通的空对象,等价于 `{}`。但在实际开发中,通常直接使用字面量 `{}` 来创建对象。 4. **`Function`** - 使用 `new Function()` 动态创建函数时,所有参数和函数体都是字符串形式。这种方式不常用,且可能存在安全风险(如执行恶意代码)。 5. **`Date`** - `new Date()` 用于创建当前日期和时间的对象,也可以通过传递字符串或时间戳来创建特定的日期。 6. **`RegExp`** - `new RegExp()` 用于动态创建正则表达式对象,适用于需要根据变量生成正则表达式的情况。 7. **`Symbol`** - `Symbol` 是 ES6 引入的一种新原始数据类型,每个 `Symbol` 值都是唯一的,常用于对象属性的键以避免命名冲突。 8. **`Map` 和 `Set`** - `Map` 提供了更高效的键值对存储方式,支持任意类型的键。 - `Set` 用于存储唯一的值集合,自动去重。 9. **`Error`** - `Error` 及其子类(如 `SyntaxError`, `TypeError` 等)用于表示不同的错误类型,常用于异常处理。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值