String

、Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicoe字符组成。

、Java没有内置的字符串类型,而是在标准java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例/对象。

3、String称为不可变字符序列

Java中的String类型是不可改变字符串,所谓的不可改变就是,一旦你对它赋值以后,它的值就不会再发生变化。

例:

String a= "abc";//a = "abc"

a = a+"def";//a = “abcdef"

看似a的值已经发生了改变,但其实不是这样的,实际上Java虚拟机是重新开辟了一个内存,用来存储字符串"abcdef",这时候a指向了新生成的字符串,而"abc"在内存中还是存在的,这就是不可改变的含义,这个字符串一旦生成,它的值就不会发生变化。

4、String类字符串作为常量值存储在方法区

String a1 = “abcd”;

String a2 = “abcd”;

boolean y = (a1 == a2 );

//这里y是true的,在内存分析那一章节里学过,字符串作为常量值存储在方法区。

因此若是直接复制的话,a1与a2指向方法区的同一个内容,因此相等 。

反而若是使用new String[ ] 来复制,虽然两者赋值相同,但是==反馈的结果就是false,因为两者指向的是不同的对象,即地址值不等。

5、String类的常用方法

(1)求字符串长度

String str = “123”;

int strlength = str.length;

(2)求字符串某一位置字符

String str = “123”;

char ch = str.charAt(0);  //ch = 1;

(3)提取子串

String str1 = new String(“123123”);

String str2 = str1.substring(2);  // str2 = “3123”

String str3 = str1.substring(2,3);  // str2 = “312”

//.substring()方法中第一个参数规定子串起始位置,第二个参数字符串结束位置

(4)字符串比较

String str1 = new String(“abc”);

String str2 = new String(“ABC”);

int a =str1.compareTo(str2);   // a > 0 ;

int b =str2.compareTo(str1);   // b < 0 ;

boolean c = str1.euqals(str2);   //c = false

boolean d = str1.euqalsIgnoreCase(str2);   //c = true

(5)字符串连接
public String concat(String str)//将参数中的字符串str连接到当前字符串的后面,效果等价于"+"。

1 String str = "aa".concat("bb").concat("cc");

2 相当于String str = "aa"+"bb"+"cc";

(6)字符串中单个字符查找
1)public int indexOf(int ch/String str)//用于查找当前字符串中字符或子串,返回字符或子串在当前字符串中从左边起首次出现的位置,若没有出现则返回-1。
2)public int indexOf(int ch/String str, int fromIndex)//改方法与第一种类似,区别在于该方法从fromIndex位置向后查找。
3)public int lastIndexOf(int ch/String str)//该方法与第一种类似,区别在于该方法从字符串的末尾位置向前查找。
4)public int lastIndexOf(int ch/String str, int fromIndex)//该方法与第二种方法类似,区别于该方法从fromIndex位置向前查找。

1 String str = "I am a good student";

2 int a = str.indexOf('a');//a = 2

3 int b = str.indexOf("good");//b = 7

4 int c = str.indexOf("w",2);//c = -1

5 int d = str.lastIndexOf("a");//d = 5

6 int e = str.lastIndexOf("a",3);//e = 2

(7)字符串中字符的大小写转换
1)public String toLowerCase()//返回将当前字符串中所有字符转换成小写后的新串
2)public String toUpperCase()//返回将当前字符串中所有字符转换成大写后的新串

1 String str = new String("asDF");

2 String str1 = str.toLowerCase();//str1 = "asdf"

3 String str2 = str.toUpperCase();//str2 = "ASDF"

(8)字符串中字符的替换
1)public String replace(char oldChar, char newChar)//用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串。
2)public String replaceFirst(String regex, String replacement)//该方法用字符replacement的内容替换当前字符串中遇到的第一个和字符串regex相匹配的子串,应将新的字符串返回。
3)public String replaceAll(String regex, String replacement)//该方法用字符replacement的内容替换当前字符串中遇到的所有和字符串regex相匹配的子串,应将新的字符串返回。

1 String str = "asdzxcasd";

2 String str1 = str.replace('a','g');//str1 = "gsdzxcgsd"

3 String str2 = str.replace("asd","fgh");//str2 = "fghzxcfgh"

4 String str3 = str.replaceFirst("asd","fgh");//str3 = "fghzxcasd"

5 String str4 = str.replaceAll("asd","fgh");//str4 = "fghzxcfgh"

(9)其他类方法
1)String trim()//截去字符串两端的空格,但对于中间的空格不处理。

1 String str = " a sd ";

2 String str1 = str.trim();

3 int a = str.length();//a = 6

4 int b = str1.length();//b = 4

2)boolean statWith(String prefix)boolean endWith(String suffix)//用来比较当前字符串的起始字符或子字符串prefix和终止字符或子字符串suffix是否和当前字符串相同,重载方法中同时还可以指定比较的开始位置offset。

1 String str = "asdfgh";

2 boolean a = str.statWith("as");//a = true

3 boolean b = str.endWith("gh");//b = true

3)regionMatches(boolean b, int firstStart, String other, int otherStart, int length)//从当前字符串的firstStart位置开始比较,取长度为length的一个子字符串,other字符串从otherStart位置开始,指定另外一个长度为length的字符串,两字符串比较,当b为true时字符串不区分大小写。
4)contains(String str)//判断参数s是否被包含在字符串中,并返回一个布尔类型的值。

1 String str = "student";

2 str.contains("stu");//true

3 str.contains("ok");//false

5)String[] split(String str)//将str作为分隔符进行字符串分解,分解后的字字符串在字符串数组中返回。

1 String str = "asd!qwe|zxc#";

2 String[] str1 = str.split("!|#");//str1[0] = "asd";str1[1] = "qwe";str1[2] = "zxc";

(10)字符串转换为基本类型
java.lang包中有Byte、Short、Integer、Float、Double类的调用方法:
1)public static byte parseByte(String s)
2)public static short parseShort(String s)
3)public static short parseInt(String s)
4)public static long parseLong(String s)
5)public static float parseFloat(String s)
6)public static double parseDouble(String s)
例如:

1 int n = Integer.parseInt("12");

2 float f = Float.parseFloat("12.34");

3 double d = Double.parseDouble("1.124");

(11)基本类型转换为字符串类型
String类中提供了String valueOf()放法,用作基本类型转换为字符串类型。
1)static String valueOf(char data[])
2)static String valueOf(char data[], int offset, int count)
3)static String valueOf(boolean b)
4)static String valueOf(char c)
5)static String valueOf(int i)
6)static String valueOf(long l)
7)static String valueOf(float f)
8)static String valueOf(double d)
例如:

1 String s1 = String.valueOf(12);

2 String s1 = String.valueOf(12.34);

(12)进制转换
使用Long类中的方法得到整数之间的各种进制转换的方法:
Long.toBinaryString(long l)
Long.toOctalString(long l)
Long.toHexString(long l)
Long.toString(long l, int p)//p作为任意进制

6、可变字符序列StringBulider和StringBuffer

package TestStringBuilder;

//测试可变字符序列,StringBuilder(线程不安全,效率高) 和 StringBuffer(线程安全,效率低)

public class Test01 {

public static void main(String[] args){

StringBuilder sb = new StringBuilder();  //字符数组长度初始为16

StringBuilder sb1 = new StringBuilder(32);  //字符数组长度初始为32

StringBuilder sb2 = new StringBuilder("abcd");  //字符数组长度初始为16+4 =20,value[]={'a','b','c','d',\u0000,...}

sb2.append("efg"); //加入

sb2.append(true); //相当于加了个字符串相连

sb2.append("ll").append("sadas").append(212); //通过return this实现方法链

}

}

File

java.io.File类: 文件和目录路径名的抽象表示形式

通过File对象可以访问文件的属性。

public boolean canRead()    public boolean canWrite()

public boolean exists()         public boolean isDirectory()

public boolean isFile()          public boolean isHidden()

public long lastModified()     public long  length()

public String getName()       public String getPath()

通过File对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)。

public boolean createNewFile() throws IOException

public boolean delete

public boolean mkdir(),   midis()    //注意两者区别

Date

java.util.Date

在标准Java类库中包含一个Date类,它的对象表示一个特定的瞬间,精确到毫秒。

Java中时间到表示说白了也是数字,是从:标准纪元1970.1.1日的0点开始到某刻时刻的毫秒数,类型是long。

代码:TestDate.java

java.text.DateFormat;  //用来将字符串与时间互换

DateFormat和SimpleDateFormat

完成字符串和时间对象的转化!

format

parse

代码:TestSimpleFormat.java

Calendar日历类

GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

注意:月份:一月是0,二月是1,以此类推,12月是11

星期:周日是1,周一是2....周六是7

代码:TestCalendar.java

JAVA基础复习与总结<五> String类_File类_Date类的更多相关文章

  1. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  2. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  3. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  4. 《Java基础复习》—常识与入门

    突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...

  5. Java基础复习之数组

    Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] id ...

  6. java基础复习记录

    java基础复习记录(数组.对象.异常) 数组 数组的定义 数组是相同类型数据的有序集合.如:篮球队就是一个数组,队员球服上有号码,相当于索引.通过某一个的某一个号码来确认是某一个队员.数组中索引从0 ...

  7. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  8. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  9. Java反射机制demo(五)—获得并调用一个类中的方法

    Java反射机制demo(五)—获得并调用一个类中的方法 这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和 ...

随机推荐

  1. Springboot自定义异常处理

    1.自定义异常类 import lombok.Data; @Data public class UserException extends RuntimeException { private Lon ...

  2. 通过命令修改mysql的提示符(转)

    本文转自冲出地球的博客原文链接:https://www.cnblogs.com/zhengchenhui/p/6649235.html 在cmd窗口操作mysql数据库的时候,前面的提示符永远都是my ...

  3. selenium + python自动化测试(一)

    本篇随笔为散集.不多逼逼直接干 step 1:使用webdriver调用浏览器,webdriver支持的浏览器为Firefox(),IE(),Chrome(),不同的浏览器需要安装不同的驱动. 本文使 ...

  4. 风火轮SMC532使用

    2018年3月份申请了一个院创,要做一个基于NFC技术的考勤设备,想法是用手机的NFC将学号信息传导考勤机,由考勤机统计缺勤信息,因为自己的拖延症,一直拖到现在.现在一边写毕业论文一边准备院创答辩,又 ...

  5. 软件测试为什么需要学习Linux的知识?Linux学到什么程度?-log5

    ​软件测试为什么需要学习Linux的知识?学到什么程度?-log5 Dotest软件测试学堂-董浩 公司目前90%的服务器操作系统不是Windows,而是Linux(RedHat.Debian.Cen ...

  6. OSG开源教程(转)

    例:geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4)); 来指定要利用这些数据生成一个怎么样的形状. ...

  7. webpack是什么

    1,打包工具 模块打包 2.前端工程师 ,必不可少工具webpack作用 1.打包 (多个文件,打包成一个文件) 2.转化(less,sass,ts) 需要核心 技术 loader 3优化(SPA越来 ...

  8. node 创建

    下载 node : 注意选项 ADD PATH 配置环境变量 node -v npm -v 检查创建一个服务器 : //创建一个服务器 127.0.0.1:8888 var http = requir ...

  9. MUI之App开发

    一般开发APP分为两种:1.原生ios和android语言开发.2.混合开发,里边穿插h5的东西. 3.第三种:现在因为前端用hbuilder工具开发的情况越来越多,这家公司又提供了更多的选择,所以近 ...

  10. 初学python之路-day10

    基础部分先告一段落,今天开始学习函数. 一.函数:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数         -- 现实中:很多问题要通过一些工具进行处理 => ...