创建stringbuilder(创建文明城市的内容怎么写)

http://www.itjxue.com  2023-02-13 20:41  来源:未知  点击次数: 

java创建pdf文件写入不进去

通常需要用到用于读、写、编辑PDF文件的库,你可以参考下面采用spire.pdf.jar来创建PDF的步骤及方法:

首先需要引入jar包。具体的引入方法可以自行百度搜索。

创建PdfDocument类的对象,并通过PdfDocument.getPages().add()方法添加页码。

定义标题文字。

创建PdfSolidBrush?画刷、PdfTrueTypeFont?字体、PdfStringFormat字符串、Rectangle2D等对象,用于指定字符串绘制效果、字体、格式、绘制区域等。

通过PdfPageBase.getCanvas().drawString(body, font2, brush2, rect, format2)方法将内容绘制到PDF页面。

下面附上详细的代码demo示例:

import com.spire.pdf.*;

import com.spire.pdf.graphics.*;

import java.awt.*;

import java.awt.geom.*;

import java.io.*;

public class CreatePdfDocumentInJava {

public static void main(String[] args) throws FileNotFoundException, IOException {

//创建PdfDocument对象

PdfDocument doc = new PdfDocument();

//添加一页

PdfPageBase page = doc.getPages().add();

//标题文字

String title = "Java基础语法";

//创建单色画刷对象

PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));

PdfSolidBrush brush2 = new PdfSolidBrush(new PdfRGBColor(Color.BLACK));

//创建TrueType字体对象

PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("宋体", Font.PLAIN, 14), true);

PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("宋体", Font.PLAIN, 10), true);

//创建PdfStringFormat对象

PdfStringFormat format1 = new PdfStringFormat();

format1.setAlignment(PdfTextAlignment.Center);//设置文字居中

//使用drawString方法绘制标题文字

page.getCanvas().drawString(title, font1, brush1, new Point2D.Float((float) page.getActualBounds(true).getWidth() / 2, 0), format1);

//从txt文件读取内容到字符串

String body = readFileToString("C:\\Users\\Administrator\\Desktop\\bodyText.txt");

//创建PdfStringFormat对象

PdfStringFormat format2 = new PdfStringFormat();

format2.setParagraphIndent(20);//设置段首缩进

//创建Rectangle2D对象

Rectangle2D.Float rect = new Rectangle2D.Float(0, 30, (float) page.getActualBounds(true).getWidth(), (float) page.getActualBounds(true).getHeight());

//使用drawString方法在矩形区域绘制主体文字

page.getCanvas().drawString(body, font2, brush2, rect, format2);

//保存到PDF文档

doc.saveToFile("ouput.pdf");

}

//自定义方法读取txt文件内容到字符串

private static String readFileToString(String filepath) throws FileNotFoundException, IOException {

StringBuilder sb = new StringBuilder();

String s = "";

BufferedReader br = new BufferedReader(new FileReader(filepath));

while ((s = br.readLine()) != null) {

sb.append(s + "\n");

}

br.close();

String str = sb.toString();

return str;

}

}

StringBuiler sb = new StringBuilder("hello");会不会在字符串常量池里创建“hello”对象?

会的。但是你的结论太草率了。StringBuilder 另外会创建一个可变长度的对象来供操作。

例如:

String str = "abc" + "hello" + “world”;

考考你,总共有几个字符串对象?

答案是有 5 个。每一个 + 都会产生一个字符串,因此如果你不用 StringBuilder 则每多一个 + 就会多产生 2 个字符串。

而如果你写成:

StringBuilder strb = new StringBuilder("abc");

strb.append("hello");

strb.append("world");

这里只有 3 个字符串常量和一个 StringBuffer 对象。每多 append 一个新的字符串,最多多出一个对象来。

因此你可以看到差别。如果连接的字符串数量越多,StringBuilder 的好处越明显。

---------------------------------------------

PS:连接 100 个字符串常量,是会产生 100 个字符串常量和一个 StringBuffer 对象。你用 + 的话,算算看要 199 个字符串常量。差得远了。

创建一个C#控制台应用程序,输入一个整数,将这个数反过来输出。如:输入12345,输出54321。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace test

{

class Program

{ //试试我写的代码,就几行

static void Main(string[] args)

{

Console.WriteLine("please input a string");

string readLine = Console.ReadLine(); //从控制台获取字符并存入到readLine中

StringBuilder resultLine = new StringBuilder(""); //创建StringBuilder对象以保存修改的数据

for (int i = readLine.Length-1; i =0 ; i--) //此处开始的索引值为readLine.Length-1

{

resultLine.Append(readLine.Substring(i,1)) ; //将截取的子字符串追加到resultLine中

}

Console.WriteLine("the result :"+resultLine); //打印输出

Console.ReadLine();

}

}

}

我记得C#里面内置有个倒序排列的方法 你可以去帮助文档上查找一下

Java中请问一共创建了多少个对象?(与StringBuffer有关)

我觉得应该是3个对象。主要分成两个阶段创建,在编译期生成两个常量字符串对象,放在字符串池中,它们是abc

567。然后在运行期创建一个StringBuffer对象,放在堆中。所以一共创建3个对象,两个常量字符串对象,一个StringBuffer对象。

(责任编辑:IT教学网)

更多

推荐软件水平考试文章