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用于文件。
转载于:https://www.cnblogs.com/rynerlute/p/6384155.html
Java学习笔记--字符串和文件IO相关推荐
- Java学习笔记----File类与IO流
第五章:File类与IO流 第一节:File类 1.1 概述 java.io.File类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作 Java把电脑中的文件和文件夹(目录) ...
- 我的Java学习笔记(六)----IO流
IO流 1. File 1.1 File类概述和构造方法 File:它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在的文件,仅仅是 ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- Java学习笔记(7)——Java基础之IO多线程网络思维导图
Java面向对象学习笔记之:包括IO(字节流,字符流,节点流,处理流).线程(线程创建,线程控制,线程同步).网络(TCP Scoket, UDP Scoket)(全屏观看Java学习笔记(7)-- ...
- java学习笔记5--类的方法
接着前面的学习: java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址 ...
- java学习笔记十三
11. 凡是继承了FilterOutputStream或FilterInputStream的类都是过滤流,也就是说他们不能直接跟目标(键盘,文件,网络等,节点流可以)数据打交道,只能包装 Intput ...
- 郑志远的java学习笔记
郑志远的java学习笔记 郑志远 CCB 1 Java起源 略 2 Java语言概述 1.面向对象编程的3个原则:封装(encapsulation).继承(inh ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- java学习笔记:全部,txt版本
java学习笔记:全部,txt版本 笔者注: 1.不知道怎么上传附件,所以就把txt文本内容全部贴在这里吧. 2.已经把txt版本的笔记上传到CSDN了,我没有设置索要积分才能下载,但是不知道为什么C ...
最新文章
- java set如何判断重复_set 怎么用iterator()方法来区分重复与否
- 学习笔记——Numpy基本操作(二)
- Spring事务回滚和异常类
- m3u8地址_「波波带你手动提取网页视频」04讲 Network和Elements提取m3u8链接
- 【玩转SQLite系列】目录收藏
- mysql originator_MySQL数据库事件调度(Event)
- 条款40:慎重的选择多重继承
- 数学建模线性规划之Lingo教程
- 审计小trick结合
- 编1加到100的代码用C语言,用C语言编写一个程序,计算从1加到100的和,并将结果输出。跪求代码,急!...
- TCP/UDP常用端口及对应服务列表
- [Debug] 法语输入
- 中国Linux发展前景怎么样?
- linux firefox xvfb,持续集成:采用Xvfb+Selenium+Firefox搭建linux服务器下的自动化测试环境...
- 某爱上面的一个帖子(一些比较实用的网站和软件)
- 一招解决苹果签名包掉包问题,一年只需签一次
- ros路由器l5和l6的区别_routerOS所有正版算号器+l6KEY
- 【C、C++系列-10】C语言实现:百钱买百鸡问题
- 网络收音机!免费的成本和不间断的音乐
- 嵌入式linux详解,嵌入式Linux详解
热门文章
- vue中axios的基本使用,天气查询案例
- maven安装以及常用配置,idea如何配置maven
- mysql-front5.1的注册码
- swagger文档配置
- sublime text c++ mac 怎么用_Mac 地址是什么,怎么用
- 2019-07-03
- GDAL不支持创建PCIDSK的面状矢量格式
- linux find返回数据不一样,请问一个linux的find的问题,如何让find的返回结果不显示“Perm...
- android+JPEG+编码,Android_解析:android 如何从JPEG生成BufferedImage,如下所示:复制代码 代码如下 - phpStudy...
- Spark on YARN 两种模式yarn-cluster yarn-client 面试题