String 类型的初始化:String s; and String s=null ; and String s=" 的区别

本文详细解释了Java中字符串的不同初始化方式及其特点,包括声明未初始化的引用变量、初始化为null及初始化为空字符串的区别,帮助读者理解如何正确使用这些初始化方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String s ;该语句表示只是声明了一个引用变量,但是并没有初始化引用,所以对变量s的任何操作(除了初始化赋值外) 都将引发异常. 
String s=null; 表示未申请任何内存资源,即些语句表示声明了一个引用变量并初始化引用,但是该引用没有指向任何对象.但可以把它作为参数传递或其它使用,但是不能调用它作为对象的方法

String s=""; 表示申请了内存资源,但资源空间值为空。该语句表示声明并引用到一个对象,只不过这个对象为0个字节.所以既然有了对象,就可以调用对象的方法
注意:"" 也是字符串

String s = String.Empty 与 String s=""; 是完全相同的


String   abc=null;   
String   abc="";   
一般推荐使用第二种   
第一种abc指向null,很多时候要判断字符串是否为空时,容易漏掉这种情况,在调用String的相关方法的时候就会出错   
第二种则相对简单,String的方法都可以用,判断的时候也不会出错

public String convertToHtml(InputStream docxStream) throws Exception { try (XWPFDocument document = new XWPFDocument(docxStream)) { StringBuilder htmlBuilder = new StringBuilder(); htmlBuilder.append(&quot;<body>&quot;); // 处理段落 for (XWPFParagraph paragraph : document.getParagraphs()) { htmlBuilder.append(processParagraph(paragraph)); } // 处理表格 for (XWPFTable table : document.getTables()) { htmlBuilder.append(processTable(table)); } htmlBuilder.append(&quot;</body>&quot;); return htmlBuilder.toString(); } } private String processParagraph(XWPFParagraph paragraph) throws Exception { StringBuilder paraBuilder = new StringBuilder(&quot;<p>&quot;); for (XWPFRun run : paragraph.getRuns()) { String text = run.getText(0); // 处理图片 if (run.getEmbeddedPictures().size() > 0) { for (XWPFPicture picture : run.getEmbeddedPictures()) { XWPFPictureData picData = picture.getPictureData(); // 上传图片并获取URL String imageUrl = fileProcessingService.uploadImage( picData.getData(), picData.suggestFileExtension() ); paraBuilder.append(&quot;<img src=\&quot;&quot;).append(imageUrl).append(&quot;\&quot; alt=\&quot;\&quot;>&quot;); } } if (text != null && !text.trim().isEmpty()) { // 获取当前运行的样式 if (run.isBold()) paraBuilder.append(&quot;<strong>&quot;); if (run.isItalic()) paraBuilder.append(&quot;<em>&quot;); // 添加文本内容 paraBuilder.append(escapeHtml(text)); if (run.isItalic()) paraBuilder.append(&quot;</em>&quot;); if (run.isBold()) paraBuilder.append(&quot;</strong>&quot;); } } paraBuilder.append(&quot;</p>&quot;); return paraBuilder.toString(); } private String processTable(XWPFTable table) throws Exception { StringBuilder tableBuilder = new StringBuilder(&quot;<table border=\&quot;1\&quot;>&quot;); for (XWPFTableRow row : table.getRows()) { tableBuilder.append(&quot;<tr>&quot;); for (XWPFTableCell cell : row.getTableCells()) { tableBuilder.append(&quot;<td>&quot;); for (XWPFParagraph para : cell.getParagraphs()) { tableBuilder.append(processParagraph(para)); } tableBuilder.append(&quot;</td>&quot;); } tableBuilder.append(&quot;</tr>&quot;); } tableBuilder.append(&quot;</table>&quot;); return tableBuilder.toString(); } private String escapeHtml(String text) { return text.replace(&quot;&&quot;, &quot;&&quot;) .replace(&quot;<&quot;, &quot;<&quot;) .replace(&quot;>&quot;, &quot;>&quot;) .replace(&quot;\&quot;&quot;, &quot;&quot;&quot;) .replace(&quot;'&quot;, &quot;'&quot;); } private static final Map<String, String> COLOR_MAP = new HashMap<>(); static { Properties props = new Properties(); try (InputStream input = WordToHtmlConverter.class.getResourceAsStream(&quot;/colors.properties&quot;)) { if (input != null) { props.load(input); for (String colorName : props.stringPropertyNames()) { COLOR_MAP.put(colorName.toLowerCase(), props.getProperty(colorName)); } } else { // 如果文件不存在,使用一个默认的小映射表 initDefaultColorMap(); } } catch (IOException e) { initDefaultColorMap(); } } private static void initDefaultColorMap() { // 初始化一个默认的小映射表 COLOR_MAP.put(&quot;black&quot;, &quot;#000000&quot;); COLOR_MAP.put(&quot;white&quot;, &quot;#FFFFFF&quot;); COLOR_MAP.put(&quot;red&quot;, &quot;#FF0000&quot;); // ... 其他基本颜色 } private String getColorHex(String colorName) { if (colorName == null || colorName.isEmpty()) { return null; } String lowerColor = colorName.toLowerCase(); return COLOR_MAP.get(lowerColor); } 需要将word中的文字 颜色\字体大小等格式写进HTML中
最新发布
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值