精华内容
下载资源
问答
  • java-空字符串的Optional实现

    千次阅读 2021-03-13 08:05:09
    但是,在花一些时间查看实现之后,我可以添加的细节很少-作为实用程序,您可以实现一个静态实现,该实现将验证字符串输入的null和isEmpty条件,并相应地返回Optional.该代码可能看起来像-private static Optional ...

    尝试一些事情来解决您的目标,然后意识到我会从VGR那里接受想法,因为与使用现有方法相比,实现这种用例是很多额外的工作.

    但是,在花一些时间查看实现之后,我可以添加的细节很少-

    作为实用程序,您可以实现一个静态实现,该实现将验证字符串输入的null和isEmpty条件,并相应地返回Optional.该代码可能看起来像-

    private static Optional ofEmptyable(String string) {

    return isNullOrEmpty(string) ? Optional.empty() : Optional.of(string);

    }

    private static boolean isNullOrEmpty(String target) {

    return target == null || target.isEmpty();

    }

    然后,这可以代替ofNullable的用法,后者专门检查null(Optional的主要目的).

    由于问题陈述中的期望是像可选方法一样实际处理每个方法(map / or /或Else)调用的情况,因此与OptionalInt类似的一种方法可以是将自定义OptionalString实现为-

    public final class OptionalString {

    private static final OptionalString EMPTY = new OptionalString();

    private final boolean isPresent;

    private final String value;

    private OptionalString() {

    this.isPresent = false;

    this.value = "";

    }

    private static OptionalString empty() {

    return EMPTY;

    }

    private boolean isPresent() {

    return isPresent;

    }

    private OptionalString(String value) {

    this.isPresent = true;

    this.value = value;

    }

    public static OptionalString of(String value) {

    return value == null || value.isEmpty() ? OptionalString.empty() : new OptionalString(value);

    }

    public OptionalString map(Function super String, ? extends String> mapper) {

    return !isPresent() ? OptionalString.empty() : OptionalString.of(mapper.apply(this.value));

    }

    public OptionalString or(Supplier supplier) {

    return isPresent() ? this : OptionalString.of(supplier.get());

    }

    String orElse(String other) {

    return isPresent ? value : other;

    }

    public String getAsString() {

    return Optional.of(value).orElseThrow(() -> new NoSuchElementException("No value present"));

    }

    }

    可以通过以下方式针对您的用例进一步实现-

    String customImpl = OptionalString.of(entity.getName())

    .map(OptionalStringTest::trimWhiteSpaces) // OptionalStringTest is my test class name where 'trimWhiteSpaces' operation on String resides

    .or(service::getMostCommonName)

    .orElse("learning");

    System.out.println(String.format("custom implementation - %s", customImpl));

    哪里

    private static String trimWhiteSpaces(String x) {

    return x.trim();

    }

    注意-老实说,我找不到JDK中没有OptionalString类的背后的理由(我之所以这样说是因为我怀疑背后肯定有想法),我相信这仅仅是因为我的触角半径要小得多,我希望有人能在这里添加更多细节.恕我直言,看起来几乎所有您想要的东西都在使用Optional< String>这将我们带回到循环的开始.

    展开全文
  • 空字符串“”1.类型:“”是一个空字符串(String),长度为0,占内存,在内存中分配一个空间,可以使用Object中的方法(.toString()等)2.内存分配:表示声明一个字符串类型的引用,其值为""空字符串,这个引用...

    空字符串“”

    1.类型:“”是一个空字符串(String),长度为0,占内存,在内存中分配一个空间,可以使用Object中的方法(.toString()等)

    2.内存分配:表示声明一个字符串类型的引用,其值为""空字符串,这个引用指向str1的内存空间。(是一个对象类型,定义是用 String[] a=new String[10]; 而非 String[] a="String";)

    null

    1.类型:null是空引用,表示一个对象的值,没有分配内存,调用null的字符串的方法汇抛出空指针

    如:str1.endsWith(str2); java.lang.NullPointerException)

    2.内存分配:表示生命一个字符串对象的引用,但指向null,也就是说没有指向任何内存空间。

    例:

    String str1 = ""; //str1对应一个空串,声明对象的引用

    String str2 = null; //str2引用为空

    String str3 = new String(); //str3将指向具体的String实例,默认值为“”

    注意:str1和str3被实例化,而str2没有实例化,但str1和str3所指的地址不同,但值一样,都为空。

    null不是对象(空引用),“”是对象,所以比较的时候是if(str1.equals(""))和if(str2!=null)

    (即对象用.equal()比较,null用等号比较。)正确的写法是先判断是否是对象,若是,在判断是否是空字符串。

    注:

    1.java中类的对象用句柄来访问,类似于C中的指针。

    2.java中的两种判断:==和equal()

    ==根据地址来比较,只有地址和值都相等时才相等

    equal()比较的是变量的值,只要值相等,两者就相等

    3.在java中变量和引用变量存在栈中,对象都存放在堆中。

    例如:String str = new String("abc");//str存放在stack中,abc这个值存放在heap中,并指向其分配的内存空间。

    java中的变量和引用变量

    java中数据类型分为两大类:基本数据类型和复合数据类型。相应的变量分为基本变量和引用变量。

    java中的8中基本类型的变量称为基本类型变量,而类、接口、数组变量是引用类型变量。

    展开全文
  • java怎么判断字符是否为发布时间:2020-06-29 18:07:03来源:亿速云阅读:179作者:Leahjava怎么判断字符是否为?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...

    java怎么判断字符是否为空

    发布时间:2020-06-29 18:07:03

    来源:亿速云

    阅读:179

    作者:Leah

    java怎么判断字符是否为空?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

    java判断字符是否为空

    以下为各位总结了java判断字符是否为空的四种方法,希望对各位有帮助。

    方法一、最多人使用的一个方法, 直观, 方便, 但效率很低:if(s == null || s.equals(""));

    方法二、 比较字符串长度, 效率高, 是我知道的最好一个方法:if(s == null || s.length() == 0);

    方法三、 Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法二.if(s == null || s.isEmpty());

    方法四、这是一种比较直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多:if (s == null || s == "");

    注意:s == null 是有必要存在的.()

    如果 String 类型为null, 而去进行 equals(String) 或 length() 等操作会抛出java.lang.NullPointerException.

    并且s==null 的顺序必须出现在前面,不然同样会抛出java.lang.NullPointerException.

    如下Java代码:String str = null;

    f(str.equals("") || str == null){//会抛出异常

    System.out.println("success");

    }

    补充:

    一、空字符串与null区别

    1、类型

    null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ;

    ""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ;

    2、内存分配

    String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间;

    String str = "";    表示声明一个字符串类型的引用,其值为""空字符串,这个str引用指向的是空字符串的内存空间;

    在java中变量和引用变量是存在栈中(stack),而对象(new产生的)都是存放在堆中(heap):

    就如下:String str = new String("abc") ;

    ps:=左边的是存放在栈中(stack),=右边是存放在堆中(heap)。

    3、示例程序:public class String_Demo01 {

    public static void main(String[] args) {

    String str1 = new String() ;

    String str2 = null ;

    String str3 = "" ;

    System.out.println(str1==str2); //内存地址的比较,返回false

    System.out.println(str1.equals(str2)); //值的比较,返回false

    System.out.println(str2==str3); //内存地址的比较,返回false

    System.out.println(str3.equals(str2)); //值的比较,返回false

    System.out.println(str1==str3); //内存地址的比较,返回false

    System.out.println(str1.equals(str3)); //值的比较,返回true

    }

    }

    通过如上的程序可以得出如下结论:

    字符串对象与null的值不相等,且内存地址也不相等;

    空字符串对象与null的值不相等,且内存地址也不相等;

    new String()创建一个字符串对象的默认值为"" (String类型成员变量的初始值为null)

    关于java怎么判断字符是否为空问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

    展开全文
  • Java空字符串与null的区别:1、类型null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ;...

    Java空字符串与null的区别:

    1、类型

    null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ;

    ""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ;

    2、内存分配

    String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间;

    String str = "";    表示声明一个字符串类型的引用,其值为""空字符串,这个str引用指向的是空字符串的内存空间;

    在java中变量和引用变量是存在栈中(stack),而对象(new产生的)都是存放在堆中(heap):

    就如下:

    String str = new String("abc") ;

    ps:=左边的是存放在栈中(stack),=右边是存放在堆中(heap)。

    3、示例程序:

    public classString_Demo01 {/***@paramargs*/

    public static voidmain(String[] args) {

    String str1= newString() ;

    String str2= null;

    String str3= "";

    System.out.println(str1==str2); //内存地址的比较,返回false

    System.out.println(str1.equals(str2)); //值的比较,返回false

    System.out.println(str2==str3); //内存地址的比较,返回false

    System.out.println(str3.equals(str2)); //值的比较,返回false

    System.out.println(str1==str3); //内存地址的比较,返回false

    System.out.println(str1.equals(str3)); //值的比较,返回true

    }

    }

    通过如上的程序可以得出如下结论:

    字符串对象与null的值不相等,且内存地址也不相等;

    空字符串对象与null的值不相等,且内存地址也不相等;

    new String()创建一个字符串对象的默认值为"" (String类型成员变量的初始值为null)

    以下是java 判断字符串是否为空的四种方法:

    方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低:

    if(s == null || s.equals(""));

    方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法:

    if(s == null || s.length() == 0);

    方法三: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法二.

    if(s == null || s.isEmpty());

    方法四: 这是一种比较直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多:

    if (s == null || s == "");

    注意:s == null 是有必要存在的.

    如果 String 类型为null, 而去进行 equals(String) 或 length() 等操作会抛出java.lang.NullPointerException.

    并且s==null 的顺序必须出现在前面,不然同样会抛出java.lang.NullPointerException.

    如下Java代码:

    String str = null;if(str.equals("") || str == null){//会抛出异常

    System.out.println("success");

    }

    展开全文
  • Java空字符串与null的区别:1、类型null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ;...
  • Java空字符串和null

    2021-06-20 23:38:14
    “”是一个长度为 0 且占内存的空字符串,在内存中分配一个空间,可以使用 Object 对象中的方法。例如:“”.toString()等。
  • Java 创建并声明字符串数组

    千次阅读 2021-03-08 04:12:12
    public class ArrayOfStringsDemo {public static void main(String[] args) {/**来自n o w j a v a . c o m**/String[] anArray = { "String One", "String Two", "String Three" };for (String s : anArray) {...
  • “”是一个长度为 0 且占内存的空字符串,在内存中分配一个空间,可以使用 Object 对象中的方法。例如:“”.toString() 等。null 是引用,表示一个对象的值,没有分配内存,...new String() 创建一个字符串对象...
  • 有没有办法创建(并保留)一个空字符串的文本节点,即“”.这是我如何创建节点:Element type = doc.createElement("TYPE");type.appendChild(doc.createTextNode(value));只是有时,值为空字符串“”.当我用文本编辑器...
  • Is there a way to create a new class from a String variable in Java?String className = "Class1";//pseudocode followsObject xyz = new className(param1, param2);Also, if possible does the resulting obje...
  • java判断字符是否为 以下为各位总结了java判断字符是否为的四种方法,希望对各位有帮助。 方法一、最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null || s.equals("")); 方法二、 比较字符串长度, ...
  • 使用StringBuilder.String[] strings = {"Java", "is", "cool"};StringBuilder builder = new StringBuilder();for (String string : strings) {if (builder.length() > 0) {builder.append(" ");}builder.append...
  • 我有一个像这样的文本文件:abc def jhiklm nop qrstuv wxy zzz我想要一个像这样的字符串数组:String[] arr = {"abc def jhi","klm nop qrs","tuv wxy zzz"}我试过了 :try{FileInputStream fstream_school = new ...
  • Java字符创建和长度

    2021-03-10 10:04:32
    创建字符串对象String类包含许多可用于创建String对象的构造函数。默认构造函数创建一个字符串作为其内容的String对象。例如,以下语句创建一个的String对象,并将其引用分配给emptyStr变量:String emptyStr = ...
  • java - 用空字符串替换所有非字母数字字符我尝试使用这个但没有工作 -return value.replaceAll("/[^A-Za-z0-9 ]/", "");12个解决方案209 votes使用[^A-Za-z0-9]。注意:删除空格,因为通常不会将其视为字母数字。...
  • I have the following qustion:How can I convert the following code snipped to Java 8 lambda style?List tmpAdresses = new ArrayList();for (User user : users) {tmpAdresses.add(user.getAdress());}Have no ...
  • import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Random;public class testCollection {/***利用Collections.sort()...创建完List之后,往其中添加十条随机字符...
  • java 字符串为null 如何判断

    千次阅读 2021-02-12 09:41:02
    展开全部字符串e5a48de588b662616964757a686964616f31333431343062为,就两种情况:要么为null,要么是空串-"";其中需要注意的就是当字符串为null时,使用字符串的方法 ->...Java空字符串与null的区别:1、类...
  • Java中的字符

    2021-03-02 21:43:50
    由于字节操作中文不是特别方便,所以Java就提高字符字符流= 字节流+编码表,字符流的底层还是字节流 用字节直接复制文本时,文本文件也会有中文,但是没有问题 ,原因是最终底层操作会自动进行字节拼接成中文,...
  • 本关任务:接收输入值创建字符数组,对该字符数组排序后通过该字符数组创建字符串。 编程要求 仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。 首先获取输入值,第一个为整数,代表数组长度,...
  • 介绍字符串是Java中的特殊类。我们在Java程序中定期使用String,因此比较两个字符串是Java中的一种常见做法。在本文中,我试图回答有关字符串的最常见问题,例如:“如何比较Java中的字符串?”在身份验证,排序,...
  • 第一次看完课程写了作业,希望以后能越学越好。写的比较简单,后面会慢慢完善的。...import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Random;/*** Created ...
  • Java 生成随机字符串数组的实例详解发布时间:2020-08-20 23:12:20来源:脚本之家阅读:118作者:Yanci516Java 生成随机字符串数组的实例详解利用Collections.sort()方法对泛型为String的List 进行排序。具体要求:1...
  • 您最好采用哪种方法来连接序列中的字符串,以便在每两个连续对之间添加一个逗号。 就是说,您如何将例如['a', 'b', 'c']映射到'a,b,c' ? (案例['s']和[]应分别映射到's'和'' 。)我通常最终会使用类似''.join(map...
  • java字符乱码

    2021-03-01 06:37:35
    java中处理字符时,经常会发生乱码,而主要出现的地方在读取文本文件时发生,或者是写入到文件中,在其他地方打开乱码。如下例子:1 BufferedReader br = null;2 try{3 br = new BufferedReader(new ...
  • 我正在解决一个简单的问题:在Java中删除字符数组中的某些字符,想法很简单:static void remove_char(char[] arr, char c){int r = 0;for (int i = 0 ; i < arr.length ; i++){if (arr[i] == c){r++;continue;}...
  • 我们知道,在Java中有两种创建字符串对象的方式:1)采用直接赋值的方式赋值 2)采用new关键字新建一个字符串对象。这两种方式在性能和内存占用方面存在着差别。 String类是Java使用频率很高的一种对象类型。JVM为了...
  • Java中交换字符串的字符

    千次阅读 2021-03-09 08:58:04
    为了在Java中交换字符串的字符,我们可以使用可变的字符串生成器,因此在交换过程中我们不必关心新对象的创建。在这种情况下,我们将创建一个根据交换字符的位置交换字符字符的方法,该方法将交换字符的位置作为其...
  • Java中的字符

    千次阅读 2021-02-28 17:59:37
    字符串的本质是char类型的数组,但在java中,所有用双引号""声明的字符串都是一个String类的对象。这也正体现了Java完全面向对象的语言特点。String 类1、String类对象表示的是一个常量字符串。它是不可变长度的。也...
  • Java中的字符串常量池

    2021-03-07 00:44:58
    ava中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使用,尤其是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,104,715
精华内容 441,886
关键字:

java新建空字符

java 订阅
友情链接: OJ.zip