`
bing2012
  • 浏览: 11200 次
  • 性别: Icon_minigender_1
  • 来自: 山东潍坊
最近访客 更多访客>>
社区版块
存档分类
最新评论

String部分学习笔记

 
阅读更多
public class String_Object {
	public static void main(String[] args) {
		String s1 = "abc";//s1是一个类类型变量,“abc”是一个对象而且其值不会改变
		System.out.println(s1);//这里输出的是abc
		s1 = "hello world";//s1指向的对象变了 但是对象"abc"并没有变
		System.out.println(s1);//这里输出的是hello world 
	}
}
public class StringDemo {
	public static void main(String[] args) {
		String s1 = new String("abc");
		String s2="abc";
		System.out.println("=="+(s1==s2));
		System.out.println("equals"+s1.equals(s2));
	}
}
//输出的结果:
//==false
//equalstrue

输出结果为:

s1.equals(s2)true---
s1.equals(s3)true
s1==s2false
s1==s3true

============================================================================================
判断
1.字符串是否包含一个字串。
boolean contains(str):
特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1.表示该str不在字符串中
存在
  2.字符串中是否有内容 boolean isEmpty
  3.字符串是否以指定内容开头 boolean startsWith()
  4.字符串是否是以指定内容结尾   boolean endsWith()
package Judge;

public class JudgeStringMethod {
	public static void main(String[] args) {
		method_is("arrDemo.java");
	}
	
	public static void method_is(String str)
	{
		//判断文件名是否是arr单词开头
		boolean flagArr = str.startsWith("arr");
		//判断文件名是否以.java结束
		boolean flagJava = str.endsWith(".java");
		//判断文件名中是否包含Demo
		boolean flagDemo = str.contains("Demo");
		System.out.print(flagArr);
		System.out.print(flagJava);
		System.out.print(flagDemo);
	}
}


============================================================================== 
转换
package Change;
/**转换
 * 1.将字符数组转成字符串
 * 		构造函数:String(char[])
 * 				String(char[],offset,count):将字符数组中的一部分转成字符串
 * 		 静态方法:static String copyVlaueOf(char[])
 * 				static copyValueOf(char []data,int offset,int count)
 * 				static String valueOf(char[])
 * 2.将字符串转成字符数组**
 * 		char[] toCharArray();
 * 
 * 3.将字节数组转成字符串 
 * 		String(byte[])
 * 		String(byte[],offset,count)将字节数组中的一部分转成字符串
 * 4.将字符串转成字节数组**		
 * 		byte[] getBytes();
 * 5.将基本数据类型转成字符串 
 * 		static String valueOf(int)
 * 		static String valueOf(double)
 * 		3+""跟 String.valueOf(3)效果一样 
 * 
 * 特殊:字符串和字节数组在转换的过程中,是可以指定编码表的 
 * @author bing
 *
 */
public class TestMain {
	public static void main(String[] args) {
		method_Trans();
		String s;
		StringTOChar("abcdefgh");	
	}
	
	public static void method_Trans()
	{
		char []arr = {'a','b','c','d','e'};
		String s = new String(arr);//用构造函数直接将字符数组转成字符串对象
		String s1 = new String(arr,1,3);//s1是从字符数组arr第1个元素截取3个元素
		System.out.println(s);
		System.out.println(s1);
		System.out.println(arr);//直接打印字符数组时,会将字符数组全部内容打出
		System.out.println("=====================================================");
		
		
	}
	public static void StringTOChar(String s)
	{
		char arr[] = s.toCharArray();
		System.out.println("数组长度为"+s.length());
		for(int i=0;i<s.length();i++)
		{
			System.out.println("char["+i+"]="+arr[i]);
		}
	}
}


=====================================================================================
练习一
/**
 * 模拟一个trim方法,去除字符串两端的空格
 * 思路 1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止
 * 			结尾处判断空格也是如此
 *     2,当开始和结尾都不是空格的时候,就是要获取的字符串
 * @author bing
 *
 */
public class trim {
	public static void main(String[] args) {
		String ss= "   sfasf   ";
		trim(ss);
	}
	public static void trim(String s)
	{
		int star =0, end = s.length()-1;
		
		while(s.charAt(star)==' '&& star<=end)
		{
			star++;
		}

		while(s.charAt(end)==' '&& end>=star)
		{
			end--;
		}
		s= s.substring(star, end+1);
		System.out.println(s);
	}
}

=====================================================================================
练习二
/**
 * 将字符串反转输出
 * @author bing
 *
 */
public class Flip {
	public static void main(String[] args) {
		flip("123456789");
	}
	public static void flip(String s)
	{
		char arr[] = s.toCharArray();
		int tt= s.length();
		
		for(int i = 0,j=s.length()-1;i<=j;i++,j--)
		{
			char c;
			c=arr[i];arr[i]=arr[j];arr[j]=c;
		}
		s=String.copyValueOf(arr);
		System.out.println(s);
	}
}

===========================================================================================
练习三
/**
 * 获取一个字符串在另一个字符串中出现的次数
 * @author bing
 *
 */
public class CountContain {
	public static void main(String[] args) {
		count_Contain("abcljlkjabclkjljabc","abc");
		count_Contain2("abcljlkjabclkjljabc","abc");
	}
	public static int count_Contain(String s,String s_IN)
	{int x=0;
		while(s.contains(s_IN))
		{
			int i=s.indexOf(s_IN);
			s=s.substring(i+s_IN.length());
			x++;
		}
		System.out.println(x);
		return 0;	
	}
	public static int count_Contain2(String str,String key)
	{
		int index = 0;
		int count = 0;
		while(( str.indexOf(key, index))!=-1)
		{
			index =str.indexOf(key, index);
			index+=key.length();
			count++;					
		}
		System.out.println(key+"出现的次数为:"+ count);
		return count;		
	}
}


===========================================================================================
练习四

/**
 * 获取两个字符串中的最大共同子串
 * 思路:1,将短的那个字符串按照长度递减的方式获取到
 * 		2,将每获取的子串去长串中判断是否包含
 * @author bing
 *
 */
public class CountMaxContain {
	public static void main(String[] args) {
		MaxContain("sadfashellosdfasf", "slhellofgh");
	}
	public static void MaxContain(String longStr,String shortStr)
	{
		boolean flag=false;
		for(int x = 0;x<shortStr.length();x++)
		{
			for(int i=0,j=shortStr.length()-x;j<=shortStr.length();i++,j++)
			{
				String temp = shortStr.substring(i, j);
				if(longStr.contains(temp))
				{
					System.out.println("找到"+temp);
					flag=true;
					break;
				}
			}
			if(flag)break;
		}
	} 
}


===========================================================================================
StringBuffer的使用,补充StringBuilder
package StringBuffer.base;
/**
 * StringBuffer 是一个容器 可以CRUD,长度可以变化,可以直接操作多个数据类型
 * 1.存储
 * 		StringBuffer append():将指定参数添加到已有的数据结尾处
 * 		StringBuffer insert(index,数据);
 * 2.删除 
 * 		 StringBuffer delete(int start, int end) 
          移除此序列的子字符串中的字符。 删除缓冲区中的数据包含start,不包含end
           StringBuffer deleteCharAt(int index) 
          移除此序列指定位置的 char。 
    3.获取
    	 char charAt(int index) 返回此序列中指定索引处的 char 值。
         int indexOf(String str) 
   		 int lastIndexOf(String str) 
 		 String substring(int start) 
 	4.修改
 		 StringBuffer replace(int start, int end, String str)使用给定 String 中的字符替换此序列的子字符串中的字符。 
 		  void setCharAt(int index, char ch) 将给定索引处的字符设置为 ch。
    5.反转 StringBuffer reverse() 将此字符序列用其反转形式取代。    
    6.转数组 public void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)    

  JDK1.5之后出现了StringBuilder
       StringBuffer是线程同步的 StringBuilder是线程不同步的
                          
 * @author bing
 *
 */
public class StringBufferBase {
	public static void main(String[] args) {
		//method_update();
		metod_getArray(new StringBuffer("abcdefgh"));
	}
	
	public static void metod_getArray(StringBuffer sb)//转字符数组
	{
		char chs[] = new char[sb.length()];
		sb.getChars(1, 3, chs, 2);
		for(int i = 0;i<chs.length;i++)
		{
			sop("ch["+i+"]="+chs[i]);
		}
	}
	
	public static void method_update()//更新
	{
		StringBuffer sb = new StringBuffer("abcde");
		sb.replace(1, 4, "java");
		sop(sb.toString());
	}
	
	public static void method_del()//删除
	{
		StringBuffer sb = new StringBuffer("abcde");
		//sb.delete(1, 3);//从一删除到3
		//sb.delete(0, sb.length());//清空缓冲区
		sb.deleteCharAt(0);//删除一个指定位置的字符 
		sop(sb.toString());
	}
	
	public static void method_add()//添加
	{
		StringBuffer sb = new StringBuffer();
		//StringBuffer sb1 = sb.append(11);
		sb.append(32).append("fasfdas").append(true).append(new Object());
		//方法调用链 就是方法运行之后返回来的还是这个类型的对象
		//sop(sb1.toString());
		sb.insert(1, "hello");
		sop(sb.toString());
	}
	
	public static void  sop(String str)
	{
		System.out.println(str);
	}
}




===================================================================================
基本数据类型包装类

package IntegerDemo;
/**
 * 基本数据类型对象包装类
 * 最常用的的作用是基本数据类型和字符串类型的相互转换
 * 基本数据类型转成字符串
 * 		1.基本数据类型 + “”
 * 		2.基本数据类型.toString(基本数据类型值)
 * 			如 Integer.toString(34)
 * 字符串转成基本数据类型
 * 		基本数据类型包装类.pars类型(类型值)
 * 		xxx a = xxx.parsexxx(String);
 * 		int a = Integer.parseInt("123");
 * 		double b = Double.parsDouble("12.34");
 *      boolean b = Boolean.parsBoolean("true");
 *      上面是静态方法 下面是动态方法
 *      Integer i = new Integer("123");//利用构造函数将字符串转成int型
 * 		int num = i.intValue();
 * 十进制转成其他进制
 * 		toBinaryString();
 * 		toHexString()
 * 		toOctalSring()
 * 其他进制转成十进制
 * public static int parseInt(String s,  int radix) throws NumberFormatException                 
 * @author bing
 *
 */
public class IntegerDemo {
	public static void main(String[] args) {
		//整数类型的最大值
		sop("int max:"+Integer.MAX_VALUE);
		//将一个字符串转成整数
		String s = "1234";
		int t = Integer.parseInt(s);
		t++;
		System.out.println(t);
		sop(Integer.toBinaryString(t));
		int i = Integer.parseInt("110",2);
		sop(Integer.toString(i));
		Integer in = new Integer("123");
		System.out.println(in+1);
		int ni = in.intValue();
		System.out.println(ni);
		
	}
	
	public static void  sop(String str)
	{
		System.out.println(str);
	}
}


===========================================================================================
JDK1.5的新特性
package IntegerDemo;
/**
 * JDK1.5后出现的新特性
 * @author bing
 *
 */
public class IntegerDemo2 {
	public static void main(String[] args) {
		Integer x = new Integer(4);
		Integer x1 = 4;//Jdk1.5后出现的 自动装箱
		x1 = x1+2;//对象加整数 x+2:x进行了自动拆箱 变成了int类型和2进行加法
					//再将和进行装箱赋给x1  拆箱原理 Integer.intValue
		//需要注意 Integer x = null容易造成空指针异常
		Integer m = 128;
		Integer n = 128;
		System.out.println(m==n);//false
		Integer a = 127;
		Integer b = 127;
		System.out.println(a==b);//true ,因为a和b指向了同一个Integer对象
			//因为当值在byte范围内时,对于新特性,如果数值已经存在则不会再开辟新的空间
	}				
	
	public static void method()
	{
		Integer in = new Integer("123");
		Integer ni = new Integer(123);
		System.out.println(in==ni);//false两个对象
		System.out.println(in.equals(ni));//true Integer复写了equals方法
	}
}


================================================================================
connection
|
|
     ---------------------------
list         set
|   |
|   |
--------------------             ------------------
| | |   |                |
| | |   |       |
ArrayList  LinkedList Vector HashSet          TreeSet

为什么会出现这么多的容器?
因为每个容器对数据的存储方式不同
这个存储方式称之为:数据结构
分享到:
评论

相关推荐

    Go语言学习笔记.pdf 共174页

    Go语言学习笔记.pdf 共174页 Go语言学习笔记.pdf 共174页是一本关于Go语言的详细学习笔记,涵盖了Go语言的基础知识、函数、数组、Maps、Structs、接口、并发、程序结构、标准库等方面的内容。本笔记共分为三大部分...

    Go 学习笔记 第四版 pdf

    根据提供的信息,我们可以总结出这份文档是关于Go语言学习笔记的部分内容,主要涵盖了Go语言的基础概念、语法结构、数据类型以及并发模型等关键知识点。以下是对这些知识点的详细解析: ### Go语言概述 Go(也称作...

    J2ME学习笔记 J2ME学习笔记 J2ME学习笔记

    根据提供的标题、描述、标签及部分内容,我们可以提炼出关于J2ME的学习笔记中的关键知识点,主要聚焦于Java语言的基础概念,特别是与初始化和字符串相关的部分。 ### 初始化 #### 概述 - **成员变量初始化**:所有...

    LabVIEW学习笔记 LabVIEW学习笔记

    ### LabVIEW学习笔记知识点梳理 #### 一、调试技巧与数据监测 - **探针工具**: 在调试过程中,可以通过右键菜单中的`probe`和`custom probe`功能来设置探针,用于实时监测数据流。这有助于理解数据如何在各个节点...

    Java学习笔记(必看经典).pdf

    对象包含两大部分:属性(或称为字段、成员变量),用于描述对象的状态;以及方法(或称为成员函数),定义了对象能够执行的操作。属性和方法的组合形成了对象的内部结构,而对外界来说,对象的行为表现为方法的调用...

    C语言学习笔记.zip

    本压缩包“C语言学习笔记.zip”包含了丰富的C语言学习资料,主要集中在“c-notes-master”这个子目录下,适合初学者和有一定基础的程序员进行深入学习。 在C语言的学习中,首先要掌握的基本概念包括变量、数据类型...

    瑜琅java学习笔记

    以下是对该学习笔记各部分的深入解析: #### 1. Java起源 ##### 1.1 发展背景 - Java的诞生源于Sun Microsystems的一个项目,目标是开发一种新的编程语言和技术平台,以满足嵌入式系统和消费电子产品的需求。 - ...

    java基础学习笔记.doc

    下面将详细讲解在给定的学习笔记中提到的一些关键概念。 1. **Scanner类**:Scanner类是Java中用于输入处理的类,它可以从键盘、文件或其他输入流读取基本数据类型和字符串。在示例中,`Scanner sc = new Scanner...

    一名java培训生的学习笔记(基础部分1)

    【Java基础学习笔记】 在Java学习的初期,我们首先需要关注的是JDK的安装和配置。JDK(Java Development Kit)是Java开发的核心组件,包含了编译器、JVM(Java虚拟机)以及各种开发工具。以下是安装JDK的详细步骤:...

    Python学习笔记.pdf

    Python学习笔记中的知识点涵盖了Python编程语言的基础概念和结构。由于文件内容较为复杂且存在OCR识别错误,我们将尝试将内容按可理解的结构和顺序组织并解释这些关键概念。 1. Python基础数据类型:笔记中提及了...

    java李兴华学习笔记之Java常用类库

    ### Java李兴华学习笔记之Java常用类库 #### 一、课程介绍及知识点概览 根据提供的资料,“Java李兴华学习笔记之Java常用类库”这份文档来源于北京MLDN软件实训中心的教学资料,主要涵盖了Java编程语言中常用类库...

    redis学习笔记.zip

    Redis是一款高性能的键值...这个“redis学习笔记”可能会覆盖以上所有或部分知识点,通过阅读和实践,你可以系统地掌握Redis的使用和管理。参考视频链接中的课程可能有更深入的讲解和示例,结合笔记一起学习效果更佳。

    Java基础尚硅谷宋红康学习笔记

    6. **字符串处理**:String类在Java中扮演重要角色,提供了丰富的字符串操作方法,如concat、substring、indexOf、replace等。 7. **多线程**:Java内置了对多线程的支持,通过Thread类或实现Runnable接口可以创建...

    web学习笔记 —— javascript基础

    这篇“web学习笔记——javascript基础”将带你走进JavaScript的世界,理解其基本概念和常用语法。 JavaScript语法基础: 1. 变量:在JavaScript中,变量用于存储数据。声明变量使用`var`关键字,例如`var myVar = ...

    Java学习笔记(林信良)

    ### Java学习笔记(林信良) #### 知识点概览 林信良的《JAVA学习笔记》聚焦于Java编程语言的关键概念和技术,特别强调了Java Standard Edition (J2SE) 5.0及JDK 6的更新与改进。本书不仅适合Java初学者,也适合想...

    java学习笔记整理

    【Java学习笔记整理】 Java是一种广泛使用的编程语言,它不仅是一种语言,还是一个软件开发平台和运行环境。Java分为三个主要版本:Java标准版(JSE)、Java缩微版(JME)和Java企业版(JEE)。JSE主要用于桌面应用...

    Python 学习笔记.pdf

    这份学习笔记涵盖了Python的基本概念、数据类型、控制结构、函数、模块与包、面向对象编程等重要内容。下面将对这些知识点进行详细的解读。 ### 1. Python简介 - **Python** 是一种高级编程语言,因其简洁易读的...

    王纯业版《Python学习笔记》.pdf

    从给定的文件信息来看,这是一份关于Python编程语言的学习笔记,由王纯业编著,主要覆盖了Python的基础语法、数据类型、控制结构、函数、模块与包、类和对象、异常处理以及正则表达式等内容。下面将根据笔记的目录...

Global site tag (gtag.js) - Google Analytics