Java学习笔记--字符串和文件IO

1.Java中的字符串类和字符的表示

2.区分String,StringBuilder和StringBuffer

3.从命令行中给main方法传递参数

4.文件操作

1 Java中的字符串和字符

1.1 String类

字符串就是由一系列的字符组成的序列,在很多语言中,比如C语言,将其存储在一个数组中。现在运用Java的思想,就要将字符串视为一个对象,其中Java规定的String类有11个构造方法,同时还有至少40种实现的方法,通过String类的学习,可以很好地了解面向对象的类和对象的思想。

1.2构造一个类

String newString = new String (StringLiteral);String newStr    = new String ("Hello Java!");

按照这个语法可以构造一个字符串类,字符串变量保存了存储字符串值的对象的参考。严格而言,String变量,String对象,String值是不一样的,但是大部分时候这些区别被无视了。但是按照上面的例子的理解 newStr变量指向一个存储“Hello Java”的数据区,此时如果将newStr = “I do like Java”,此时操作和以前编程的想法不太一样,此时原来的数据“Hello Java”还在,只是创建了“I do like Java”的字符串,然后将变量指向这个字符串。参照一下的例子:

public class Welcome {
    public static void main(String[] args){
        System.out.println("Welcome to Java!");
        String s1 = "Welcome to Java";
        String s2 = new String("Welcome to Java");
        String s3 = "Welcome to Java";

        System.out.println("s1 is" + s1);
        System.out.println("s2 is" + s2);
        System.out.println("s3 is" + s3);

        System.out.println("s1 == s2 is " + (s1==s2));
        System.out.println("s1 == s3 is " + (s1==s3));
    }
}

运行结果可以看到 s1,s2,s3,字符串变量都指向同样的值“Welcome to Java” 但是1和3是同一个字符串,2和另外两个不是。“==”只是表示两个字符串变量是不是指向同一个值,可以用 +equals(string2)来验证两个字符的内容是不是一样的。同样的String类,提供了equalsIgnoreCase,compareToIgnoreCase以及regionMatches的方法来比较字符串。

字符串的属性:字符串类有读取字符串长度和获得某个字符的方法,也可以连接两个字符串。根据离散数学搜索算法字符串匹配问题,Java中的String也有相关的方法来处里这类问题,获得子串+subString(beginIndex: int): String,+subString(beginIndex: int, endIndex: int): String。同样字符串也可大小写转化。

字符串和字符数组的转化,参照下面的例子:

char[] chars = "Java".toCharArray();

2.区分String,StringBuilder和StringBuffer

StringBuilder/StringBuffer 类

StringBuilder/StringBuffer 对于String而言是可选择的,总体上而言,StringBuilder/StringBuffer 在String能用的场合下都能用,而且这两个类都比String还要更灵活,应为String类生成的对象之后的字符串是固定的,并不能像StringBuilder/StringBuffer一样增加内容,对于多任务的情况下使用StringBuffer,对于单一任务的情况下,使用StringBuilder。

StringBuilder

StringBuilder有三个构造方法, +StringBuilder(),+StringBuilder(capacity: int), +StringBuilder(s: String).

toString,capacity,length,setLength 和charAt 方法

StringBuilder提供了额外的方法来实现建立字符串和获得它的内容:

+toString(): String 从StringBuilder返回字符串对象

+capacity(): int      获得StringBuilder 的内容

+charAt(index: int ): char  从inex位置返回单个字符

+length() : int        返回字符串的长度

+setLength(newLength: int) : void

+substring(startIndex: int) : String

+substring(startIndex: int , endIndex: int ):String

+trimToSize(): void

笔记:String 的length是长度,也就是bulider里面的实际的长度,capacity是现在的长度

3.从命令行中给main方法传递参数

1.给main 方法传递参数,当你编程的时候从命令行里传入,可以按照下面的例子

java TestMain arg0 arg1 arg2

这些参数是字符串,但是他们不会在命令行里面出现两次,他们都是通过空格来隔开的,当main 方法被唤起的时候Java 解释器创造了数组来存储命令行的参数,并且传递参数给args。例如你唤起了一个n个参数程序,java解释器会按照如下创造一个数组

args = new String[n];

Java解释器然后传递args来唤起main方法。

笔记:如果说没有传递字符串,但是运行程序了,那么数组将会创建为 new String[0],在这种情况下,数组时空的长度为0,args 参考了一个空的数组,因此,args不是Null、但是args.length = 0;

4.文件操作

关于文件类的操作。数据存在变量,数组和对象中,但是这些都是临时的,当程序中断了,这些数据都会消失,为了永久的存储这些在程序中创造的数据,你需要将这些数据存在一个文件里面,然后将这些文件放在磁盘或者CD上,文件可以传递,同时这些文件可以被后来的程序所访问。

每个文件都是直接放在文件系统中的,绝对文件名包含了文件的名称和全部路径名,这些都可以在操作系统的层面上看到。从某种角度来看,其实Java的虚拟机也可以看做是某种操作系统。

文件类 File Class

method : +File(pathname: String), +File(parent: String, Child: String), +File(parent: File, Child: String)

+exists(): boolean +canRead():boolean +canRead():boolean +canWrite():boolean

 文件的输入和输出

  File对象封装了文件的内容或者文件的路径,但是没有包含创建文件的方法,也么有从文件里面读或者写,为了实现输入和输出,你必须要创建对象,然后使用Java IO的类,这些对象包含了对文件读写方法。

  使用PrintWriter写数据

  Java.io.printWriter 类可以使用来创建文件,并且对文件写入数据,首先创建PrintWriter对象

  

PrintWriter output = new PrintWriter(filename);

然后你可以使用print ,println和printf的方法。

WriteData.java
public class WriteData {
public static void main(String[] args) throws Exception {
java.io.File file = new java.io.File("scores.txt");
if (file.exists()) {
System.out.println("File already exists");
System.exit(0);
}
 // Create a file java.io.PrintWriter output = new java.io.PrintWriter(file);
/ Write formatted output to the file
output.print("John T Smith ");
output.println(90);
output.print("Eric K Jones ");
output.println(85);
// Close the file
output.close();
}

通过Scanner类读取数据:Java.util.Scanner类用于读字符串和最初的值--“从控制台读输入”,

  从键盘读入时候的语法 : Scanner input = new Scanner(System.in);

  从文件中读入时的语法 : Scanner input = new Scanner(new File(filename));

注意到 new Scanner(string) 创建了一个Scanner来赋予String,为了使得Scanner 能够从文件里面读取数据,你要使用Java.io.File类来创建一个File实例,使用如下的创建方法,new File(filename),然后使用 Scanner(File)来创建一个Scanner用于文件。

时间: 2024-12-11 19:13:22

Java学习笔记--字符串和文件IO的相关文章

JAVA学习笔记 -- 把资源文件打包到jar包

初学GUI,用Eclipse导出jar包,设定的最小化图标不能显示(hello.png文件放在项目的根目录下).代码如下: import javax.swing.JFrame; import java.awt.Toolkit; import java.awt.Image; import java.net.URL; public class GUITest { public static void main(String[] args) { JFrame frame = new JFrame();

Java学习笔记七(文件夹操作)

1.介绍 上一篇博客介绍的是java中常用的操作文件的方式,本篇博客着重讲解一下,在Java中是如何来操作文件夹的.主要是利用的是Java.IO包下面的File类,本篇博客着重讲解一下该类的构造函数和常用的方法. 2.File类的字段摘要 File类为我们提供了与系统有关的路径分割符,字段分别如下 static String pathSeparator:返回值为字符串,结果表示分号; static char pathSeparatorChar:返回值为char类型,结果表示分号 static c

JAVA学习笔记--字符串概述

一.String类 String类代表字符串,是由字符构成的一个序列.创建String对象的方法很简单,有以下几种: 1)用new来创建: String s1 = new String("my name is tongye"); 2) 不用new直接创建: String s2 = "my name is tongye"; 3) 可以用字符数组来创建一个字符串: char[] c = {'t','o','n','g','y','e'}; String s3 = new

Java学习笔记——Socket实现文件传输

我越是逃离,却越是靠近你. 我越是背过脸,却越是看见你. 我从你开始, 我在你结束. 需求:实现局域网下socket传输文件. 客户端步骤: 1.建立与服务器的连接 2.创建client输出流 3.创建输入流,绑定本地文件 4.读取文件后输出给服务器 服务器端步骤: 1.启动服务器 2.创建accept输入流 3.创建输出流绑定本地文件 4.读取客户端信息写入本地文件 1.字节流传输文件. 1 public class Client { 2 3 public static void main(S

java学习笔记16--I/O流和文件

本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理设备之间的数据传输,对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中 输入/输出流可以从以下几个方面进行分类 从流的方向划分: 输入流.输出流 从流的分工划分: 节点流.处理流 从流的内容划分: 面向字符的流.面向字节的流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件

Java学习笔记_18_字符串、包装类、原始数据类剪得转换

18. 字符串.包装类.原始数据类剪得转换: 各个转换如下: 1>String 转换成Integer: Integer integer = new Integer("string");或 Integer Integer = Integer.valueOf(String): 注:String必须是数字字符串,如:"1232". 2>Integer 转换成String: String str = Integer.toString(); 3>Intege

java学习笔记 第二篇 核心技术(二)

第十四章 集合类 集合类用来存放对象的引用.继承关系如下图: 14.1 Collection 接口 是层次结构中的根接口,构成Collection的单位称为元素.Collection接口不能直接使用,但该接口提供了添加元素.删除元素.管理数据的方法. Collection接口常用方法: 14.2 List 集合 包括List接口以及List集合的所有实现类.List集合中的元素允许重复,各元素循序就是对象插入的顺序 1.List接口,两个重要方法: get(int index): 获取指定索引位

Java学习笔记_24_Map接口

24.Map接口: Map接口定义了存储"键(key)-值(value)映射对"的方法,Map中不能有重复的"键", Map实现类中储存的"键-值"映射对是通过键来唯一标识的,Map底层的"键"使用Set来存放的, 所以Map中的映射对的"键"对应的类必须重写hashCode()和equals()方法, 常用String作为Map的"键".  Map的添加.删除操作: · Object