使用 string 的一些规则

使用 string 的一些规则

//z 2012-2-7 16:50:57 PM IS2120@优快云
·        Use overloads that explicitly specify the stringcomparison rules for string operations. Typically, this involves calling amethod overload that has a parameter of typeStringComparison.
对字符串操作时使用明确地指定字符串比较规则那些重载函数。
通常,这意味这调用有一个参数类型为StringComparison的重载函数。

·        Use StringComparison.Ordinalor StringComparison.OrdinalIgnoreCase forcomparisons as your safe default for culture-agnostic string matching.
通过StringComparison明确指明是否区分大小(而不是使用默认的,默认的规则在各个类里可能并不一致)

·        Use comparisons with StringComparison.Ordinalor StringComparison.OrdinalIgnoreCase forbetter performance.

·        Use string operations that are based on StringComparison.CurrentCulture when you displayoutput to the user.
如果相应的字符串会显示给用户,那么使用基于StringComparison.CurrentCulture的字符串操作
//z 2012-2-7 16:50:57 PM IS2120@优快云

·        Use the non-linguistic StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase values insteadof string operations based onCultureInfo.InvariantCulturewhen the comparison is linguistically irrelevant (symbolic, for example).
如果比较是语言学无关的,使用StringComparison.Ordinal or StringComparison.OrdinalIgnoreCase (效率会更高?),而不是CultureInfo.InvariantCulture

·        Use the String.ToUpperInvariantmethod instead of the String.ToLowerInvariantmethod when you normalize strings for comparison.
推荐使用String.ToUpperInvariant 而不是String.ToLowerInvariant
//z 2012-2-7 16:50:57 PM IS2120@优快云

·        Use an overload of the String.Equalsmethod to test whether two strings are equal.
使用string.equals的重载方法测试两个string是否一致。

·        Use Compareand CompareToto sort strings, not to check for equality.
将Compare和CompareTo用于对字符串进行排序,而非用于一致性检查

Avoid the following practices when you use strings:

·        Do not use overloads that do not explicitly orimplicitly specify the string comparison rules for string operations.
不要使用那些没有或明或暗指定比较规则的字符串操作函数

·        Do not use string operations based on StringComparison.InvariantCulture in most cases.One of the few exceptions is when you are persisting linguistically meaningfulbut culturally agnostic data.
//z 2012-2-7 16:50:57 PM IS2120@优快云
在大多数时候都不要使用基于StringComparison.InvariantCulture的函数。

·        Do not use an overload of the String.Compareor CompareTomethod and test for a return value of zero to determine whether two strings areequal.
不得使用String.Compare或是CompareTo通过测试返回值是否为0来判断两个字符串是否相等。

//z 2012-2-7 16:50:57 PM IS2120@优快云



<think>好的,我现在需要回答用户的问题:“在beanshell使用string需要导包吗”。首先,我需要理解用户的问题核心。用户想知道在使用BeanShell时,如果要使用String类型,是否需要显式导入相关的包。 根据我之前提供的关于BeanShell数据类型的介绍,BeanShell是兼容Java语法的动态脚本语言,支持Java的原生数据类型。String在Java中属于java.lang.String,而java.lang包在Java中是默认自动导入的,无需显式导入。因此,在BeanShell中,应该也是不需要导包的。 接下来,我需要验证这一点。查阅BeanShell的官方文档或可靠资料,确认java.lang包是否默认导入。通常,BeanShell作为Java的脚本语言,应该会继承Java的默认包导入规则,所以java.lang包下的类(如String、Integer等)可以直接使用,无需导入。 然后,我需要考虑用户可能的实际使用场景。例如,用户可能在BeanShell脚本中直接声明一个字符串变量,如s = "Hello";,这时是否会出现问题?根据BeanShell的动态类型特性,变量可以自动识别为String类型,因此不需要导包。但如果用户使用的是其他包下的字符串相关类,比如org.apache.commons.lang3.StringUtils,这时候就需要导包了。不过用户的问题明确是关于String类型本身,而不是其他工具类。 另外,需要注意BeanShell和Java的一些差异,例如BeanShell允许更灵活的类型处理,但基本类型的包装类应该还是和Java一致的。因此,使用java.lang.String时不需要导包,而其他包下的类则需要显式导入。 最后,我需要组织回答,确保结构清晰,先直接回答问题,然后解释原因,再提供示例说明,并指出可能的特殊情况,比如使用非java.lang包下的类时需要导包。这样用户能全面理解,避免误解。</think>在BeanShell中使用$String$类型**不需要手动导入包**,因为其默认包含Java核心类库的自动导入机制。具体说明如下: $$ \text{关键原理} = \begin{cases} \text{java.lang包自动导入} & \text{所有Java环境默认行为} \\ \text{简化脚本编写} & \text{BeanShell设计特性} \end{cases} $$ ### 一、核心机制 1. **自动导入机制** - BeanShell继承Java的默认包导入规则 - `java.lang`包下的所有类自动可用 - 示例: ```java // 直接使用String类型 str = "BeanShell自动处理"; // 等价于new java.lang.String(...) ``` 2. **动态类型支持** ```java // 无需声明类型 a = "动态字符串"; // 自动识别为String类型 b = a.toUpperCase(); // 直接调用String方法 ``` ### 二、特殊场景处理 1. **非java.lang包的情况**(需手动导入) ```java // 使用其他包的字符串工具类时需要导包 import org.apache.commons.lang3.StringUtils; result = StringUtils.capitalize("test"); ``` 2. **显式导入演示**(非必需但合法) ```java import java.lang.String; // 合法但冗余 s = new String("显式声明示例"); ``` ### 三、验证方法 1. **类型检测示例** ```java print( typeof("abc") ); // 输出"String" print( "abc" instanceof String ); // 输出true ``` 2. **方法调用验证** ```java // 直接调用String类方法 length = "Hello".length(); // 输出5 substring = "12345".substring(2); // 输出"345" ``` ### 四、最佳实践建议 1. **推荐模式** ```java // 直接使用字面量赋值 message = "服务响应时间: " + System.currentTimeMillis(); // 需要特殊处理时使用构造函数 emptyStr = new String(); ``` 2. **避免陷阱** ```java // 错误示例:误用其他包的同名类 // import com.example.MyString; // 若存在同名类需要显式指定 // str = new MyString(); // 需完整包路径或显式导入 ``` ### 五、与Java的对比 $$ \begin{array}{|l|l|l|} \hline \text{特性} & \text{Java} & \text{BeanShell} \\ \hline \text{包导入机制} & \text{需显式import非java.lang包} & \text{同Java,但支持动态导入} \\ \text{类型声明} & \text{强制类型声明} & \text{可省略类型声明} \\ \text{字符串实例化} & \text{推荐字面量方式} & \text{同Java且更灵活} \\ \hline \end{array} $$ 结论:在BeanShell中使用标准$String$类型时,可完全按照Java语法直接使用,无需任何导包操作。只有在使用非`java.lang`包下的字符串相关类时才需要显式导入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值