黑马程序员——java基础-String类和基本数据类型包装类_java编写程序,实现基本数据类型和字符串,利用包装类中的静态方法实现二进制-程序员宅基地

技术标签: java 学习日记  

 ------- android培训java培训、期待与您交流! ----------

第一节:String类
一、String类的简述:
1、定义:多个字符组成的一串数据。
2、String类的特点:
(1)、字符串一旦被赋值,就不能改变。注意:这里指的是字符串的内容不能改变,而不是引用不能改变。
(2)、字符串都是对象。
二、String类的方法
1、常用的构造方法:
(1)、public String()无参的。
(2)、public String(byte[] bytes)参数是一个字节数组。
(3)、public String(char[] value)参数是一个字符数组。
(4)、public String(String original)参数是一个字符串。
(5)、String s = ""与(1)是等同的。
2、常用的方法:
(1)、判断
(1).1 boolean equals(Object obj)判断两个字符串是否相同。
(1).2 boolean equalsIgnoreCase(String str)判断两个字符串是否相同,并且忽略大小写。
(1).3 boolean contains(String str)判断是否包含指定的字符串。
(1).4 boolean startsWith(String str)判断是否以指定的字符串开头。
(1).5 boolean endsWith(String str)判断是否以指定的字符串结尾。
(1).6 boolean isEmpty()判断是否为空。
(2)、获取
(2).1 int length()获取字符串的长度。
(2).2 char charAt(int index)根据角标获取角标位置上的字符。
(2).3 int indexOf(int ch)根据字符获取字符所在的角标位置。
(2).4 int indexOf(String str)获取str在字符串中第一次出现的位置。
(2).5 int indexOf(int ch,int fromIndex)获取从指定位置获取一个字符第一次出现的位置。
(2).6 int indexOf(String str,int fromIndex)获取从指定位置获取str第一次出现的位置。
(2).7 String substring(int start)从指定位置开始到结尾。获取字符串的子串。如果角标不存在,会出现字符串角标越界异常。
(2).8 String substring(int start,int end)从指定位置开始包头不包尾,获取字符串的子串。
(3)、转换
(3).1 byte[] getBytes()字符串转换成字节数组。
(3).2 char[] toCharArray()字符串转换成字符数组。
(3).3 static String valueOf(char[] chs)字符数组转换成字符串。
(3).4 static String valueOf(int i)int类型的数据转换成字符串。
(3).5 String toLowerCase()把所有的字符串转换成小写。
(3).6 String toUpperCase()把所有的字符串转换成大写。
(3).7 String concat(String str)将指定字符串连接到此字符串的结尾。(还有一种方法就是字符串的拼接)。
(4)、替换
 (4).1 String replace(char old,char new)获取一个新的字符串,假如要被替换的字符串不存在的话。获取的还是原字符串。(换的一个字符)
 (4).2 String replace(String old,String new)获取一个新的字符串,假如要被替换的字符串不存在的话。获取的还是原字符串。(换的是一个字符串)
(5)、去空格
(5).1 String trim()去除字符串两端多余的空格。
(6)、按字典比较
(6).1 int compareTo(String str)两个字符串按照字典的顺序进行比较。
(6).2 int compareToIgnoreCase(String str) 两个字符串按照字典的顺序进行比较,忽略大小写。
(7)、代码体现

   小练习1、

/*
1 模拟一个trim方法,去除字符串两端的空格
思路:
 1 判断第一个位置是否是空格 是的话就进行去除不是得话就保留 
 2 将一个新的字符串打印。
*/
class Demo
{
	public static void main(String[] args)
	{
		//自定义一个字符串
	String str="   fjdgsofagj    ";
	//把字符串传入到函数当中去
	String ss=getString(str);
	System.out.println(ss);
	
	
	}
	public static String getString(String str)
	{
		//定义一个空的字符串
		String s="";
		//把字符串转成字符数组
	char[] ch=str.toCharArray();
	//对字符数组进行遍历
	for (int x=0;x<ch.length ;x++ )
	{
		//进行判断
		if (ch[x]!=' ')
		{
			//利用字符串的拼接的方式
		s=s+ch[x];
		}
	}
	return s;
	
	}
}

小练习2、

/*
2 将一个字符串进行反转,将字符串中的指定部分进行反转  
	思路:
	1 我们学过对字符串的反转 也学过对数组的进行反转
	2 对字符串中的一部分进行反转的话 首先要知道我们要反转的部分 
	3 根据数组的反转 把指定的部分进行反转 剩下的部分不需要进行反转
	4 把字符串进行打印

*/
class Demo1
{
	public static void main(String[] args)
	{
		//指定需要反转的部分
		int index=5;
		//自定义一个字符串
	String ss="abcdefghijklmn";
	//打印符合要求的字符串
	System.out.println(getString(ss,index));
	
	}
	public static String getString(String ss,int index)
	{
		//定义一个空的字符串
		String s="";
		//把字符串转成字符数组
		char[] ch=ss.toCharArray();
		//对需要反转的部分进行遍历
		for (int start=0,end=index;start<end;start++,end--)
		{
			//采用第三方变量进行位置的转换
			char temp=' ';
			temp=ch[start];
			ch[start]=ch[end];
			ch[end]=temp;		
		}
		return new String(ch);
	
	}
}

小练习3、

/*
3 获取一个字符串在另一个字符串出现的次数
思路:
1 就是获取一个字符串在另一个字符串用indexOf(String)方法
2 当获取到了第一个字符串的索引之后在加最短的字符串的长度 然后再根据索引在进行第二次获取当返回值为-1的时候就完成了
3 定义一个计时器 来记住字符串出现的次数

*/
class Demo2
{
	public static void main(String[] args)
	{
		//自定义一个字符串
		String ss="jdfglaajioaajljaajpiojj";
		//在自定义一个字符串
		String s="aa";
		//把这两个字符串传入函数当中,并打印
		System.out.println(getValue(ss,s));
	
	}
	public static int getValue(String ss,String s)
	{
		//定义两个变量
		int count=0;
		int index=0;
		//判断这两个字符串的长度
		if (ss.length()>s.length())
		{
				//进行循环的查找
			while (ss.indexOf(s,index)!=-1)
			{
				count++;
				//发现有相同的,加上字符串的长度继续查找,直到查找完
				index=ss.indexOf(s,index)+s.length();

			}
		}
	
	return count;
	}
}

小练习4、

/*
获取两个字符串的最大相同子串,
思路:
1 首先得知道这两个字符串的长度
2 把短的字符串进行分开 把所有有可能出现的字符全部得到
3 在用长的进行判断

*/
class Demo3
{
	public static void main(String[] args)
	{
		//自定义两个字符串
		String ss="abcdefghijklmn";
		String s="sdabcdlljkkn";
		//把字符串传入到函数当中去
		System.out.println(getMaxString(ss,s));
	
	}
	public static String getMaxString(String ss,String s)
	{
		//判断两个字符串的长度
		if (ss.length()>s.length())
		{
			return getString(ss,s);
		}	
		else
		{
		
		return getString(s,ss);
		}
	}
	public static String getString(String ss,String s)
	{
		//对字符串中的角标进行遍历
		for (int x=0;x<s.length() ;x++ )
		{
			//进行对长度较长的字符串进行分段进行分割
			for (int y=0,z=s.length()-x;z!=s.length()+1 ;y++,z++ )
			{
				//分割一个字符串
				String sss=s.substring(y,z);
				//判断是否与较短的字符串相同
				if (ss.contains(sss))
				return sss;
				
			}
		}
	return "  ";

	}
}


第二节:StringBuffer与StringBuilder
一、字符串缓冲区的简述:
1、由来
  用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了一个字符串缓冲区类。StringBuffer供我们使用。
2、字符串缓冲区的特点:
特点:
(1)、字符串缓冲区其实就是一个容器。
(2)、长度的可变的。
(3)、可以存储不同类型数据。
(4)、最终要转成字符串进行使用。 
(5)、可以对字符串进行修改。 
3、字符缓冲区和数组的区别
(1)、数组:数组存储完可以单独操作每一个元素,每一个元素都是独立的。
(2)、字符串缓冲区:缓冲区中的元素最终会拼成一个大的字符串。
二、StringBuffer类常用方法
1、StringBuffer的构造方法
(1)、public StringBuffer()空参的。
(2)、public StringBuffer(String str)参数是一个字符串。
2、StringBuffer的方法
(1)、添加
(1).1 StringBuffer append(String str) 添加字符串。
(1).2 StringBuffer insert(int offset,String str)从某个位置插入一个字符串。
(2)、删除
(2).1 StringBuffer delete(start,end):包含头,不包含尾。     
(2).2 StringBuffer deleteCharAt(int index):删除指定位置的元素。
(3)、替换
(3).1 StringBuffer replace(int start,int end,String str)根据头和尾角标替换一个字符串。
(4)、反转
(4).1 StringBuffer reverse()对缓冲区里的元素进行反转。
(5)、截取(注意这个返回值)
(5).1 String substring(int start)从缓冲区指定位置开始到结尾。获取一个字符串。
(5).2 String substring(int start,int end)在缓冲区指定的区间内,获取一个字符串。
三、StringBuilder类
1、StringBuilder在jdk1.5以后出现了功能和StringBuffer一模一样的对象。
2、StringBuilder与StringBuffer的区别
(1)、不同的是: 
(1).1 StringBuffer是线程同步的。通常用于多线程。 
(1).2 StringBuilder是线程不同步的。通常用于单线程。 它的出现提高效率。
(2)、相同的是:长度都是可变化的。
3、jdk升级的原因:
(1)、简化书写。 
(2)、提高效率。 
(3)、增加安全性
第三节:基本数据类型的包装类
一、基本数据类型的包装类的简述:
1、将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
2、常用的操作之一:用于基本数据类型与字符串之间的转换。
3、基本类型和包装类的对应(上下对应)
(1)、byte|short|  int  |long|float|double|  char   |boolean|
(2)、Byte|Short|Integer|Long|Float|Double|Character|Boolean|
4、基础数据类型与字符串之间的转换
(1)、基本数据转换成字符串
(1).1 基本类型数值+"" ;
(1).2 用String类中的静态方法valueOf(基本类型数值);
(1).3 基本数据类型.toString();
(2)、字符串转换成基本数据类型
(2).1 使用包装类中的静态方法xxx parseXxx("xxx类型的字符串");(注只有Character没有parse方法)。
(2).2 假如字符串被Integer进行对象的封装,可以用另一个非静态方法,intValue();
二、Integer类
1、Integer的构造方法
(1)、public Integer(int value)参数是一个数。
(2)、public Integer(String s)参数是一个字符串。
2、Integer的常用方法
(1)、public static int parseInt(String s)字符串转换成基本数据类型。
(2)、public static Integer valueOf(String s)字符串转换成基本数据类型的包装类。
(3)、public static String toBinaryString(int i)十进制转换成二进制。
(4)、public static String toHexString(int i)十进制转换成十六进制。
(5)、public static String toOctalString(int i)十进制转成八进制。
(6)、public static int parseInt(String s,int radix)其他进制转换成十进制。
3、jdk1.5的新特性
(1)、自动装箱,基本类型--引用类型
(1).1 Integer x=8;
(2)、自动拆箱,引用类型--基本类型
(2).1 x=x+2;
(3)、数值在byte范围内时,由于新特性假如该数值已经存在,就不会开辟空间。
Integer a =128;
Integer b =128;
System.out.println(a==b);结果为false 128超出了byte的范围。
Integer c =127;
Integer d =127;
System.out.println(c==d);结果为true。

 ------- android培训java培训、期待与您交流! ----------

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bei__kou/article/details/46457761

智能推荐

(附源码)ssm高校实验室系统 毕业设计 800008_学校实验管理系统源代码-程序员宅基地

文章浏览阅读1k次,点赞7次,收藏4次。技术可行性:(1)硬件可行性分析系统的硬件要求方面不存在特殊的要求,只需要在普通的硬件配置就能够轻松的实现,只是需要确保系统的正常工作即可,以及拥有较高的效率。如果有特别低的硬件,它可以导致系统的低性能以及效率低,从而导致整个网站的运行不顺畅。以目前普遍的个人计算机的配置而言,这是十分容易实现的 。因此,本系统的开发在硬件方面是可行的。提供完整的技术支持和保护,确保网站的稳定,安全运行,提供24×7和24小时技术支持项目完成提供主要的服务器系统安全及时的通知和更新服务。(2)软件可行性分析提供一个_学校实验管理系统源代码

SIT2596,可替代LM2596,40V 输入 150KHz 3A 降压型电源转换器-程序员宅基地

文章浏览阅读655次。SIT2596 封装形式包括标准的 5 脚 TO-220 封装(DIP)和 5 脚 TO-263 表贴封装(SMD)。输出电压,电压输出范围在 1.2V-37V,输入电压最高可达 40V,输出电流可达 3A;SIT2596 是一款降压型开关电压调节芯片,可固定输出 3.3V、5V、12V,也可根据需要调节。准电感,这更优化了 SIT2596 的使用,极大地简化了开关电源电路的设计,节约了外围的成本。可选固定输出 3.3V、5V、12V 电压或输出电压可调;优异的线性调整率和负载调整率;_替代lm2596

直接扩频通信系统工作原理_直接序列扩频码本的概念-程序员宅基地

文章浏览阅读973次。接收端的本振信号与发射端射频载波相差一个中频,接收端收到的宽带射。波形相乘,得到复合信号,实现信号频谱的展宽,展宽后的信号再调制射频载波发送出去。一般扩频调制时一个信息码包含一个周期的伪码,用扩频后的复合信号对载波进。在发端输入的信息与扩频码发生器产生的伪随机码序列(这里使用的是 m 序列)进行。直接序列扩频,就是直接用高码率的扩频码序列在发端去扩展信号的频谱,在收端用相。的扩频码序列进行波形相乘,实现相关解扩,再经信息解调,恢复出原始信号。同的扩频码去解扩,把展宽的扩频信号还原成原始的基带信号。_直接序列扩频码本的概念

EMV规范(八)——持卡人验证(CVM)二_9f34 emv tag-程序员宅基地

文章浏览阅读2.4k次。现在到了TVR和CVM Results部分了。TVR是Terminal Verification Results,也就是终端验证的结果,包括了脱机数据认证,持卡人认证,处理限制等等是否成功。所以只要交易结果不是我们期望的,我们总是先拿TVR出来看看是哪里出了问题。CVM Results是持卡人认证结果,针对CVM。一. TVRtag:‘95’ length:5 bytes第..._9f34 emv tag

2023国赛信息安全管理与评估样题及规程解读,2024京东最新网络安全面试真题解析-程序员宅基地

文章浏览阅读845次,点赞25次,收藏30次。还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!

阿里云服务器绑定域名及IIS配置访问网站_阿里云服务器部署iis-程序员宅基地

文章浏览阅读436次。注:阿里云网站申请需要进行IPC备案,如果不通过备案仅可本机IP地址访问,其它IP地址访问失败或是提示未进行备案。解决办法:开始菜单-服务器管理器-管理(M)-添加角色和功能-按步骤添加Web服务器(IIs)注:云服务器选择的阿里云windows系统,同时使用的是IIS进行服务器配置。解决办法:清理浏览器缓存后刷新,或是更换成其它浏览器。问题2:关于更改网站内容,刷新仍然保存旧界面。问题1:关于云服务器中没有IIS管理器。_阿里云服务器部署iis

随便推点

【 找出不是两个数组共有的元素 】 给定两个整型数组,本题要求找出不是两者共有的元素。-程序员宅基地

文章浏览阅读3.2w次,点赞8次,收藏13次。 输入格式:输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。输出格式:在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。输入样例:10 3 -5 2 8 0 3 5 -15 9 10011 6 4 8 2 6 -5 9 0 100 8 1输出样例:3..._找出不是两个数组共有的元素

简单图形界面初学 :tkinter+阿里云接口+爬虫,实现全国天气查询_tkinter显示爬虫七天天气折线图-程序员宅基地

文章浏览阅读1.1k次。 可能需要的环境: Python 3.6官网下载 需要下载的第三方库:requests 其余为python自带不需要下载 首先看下效果图具体写作过程参考b站视频传送门:GUI天气预报接下来实现过程,首先创建窗口,设置标题,布局窗口,设置标签,按钮,就直接粘贴代码:如果对创建窗口的函数不熟悉:请点击python中tkinter的使用(控件整理)(一..._tkinter显示爬虫七天天气折线图

JavaScript 逐点突破之单线程与异步,作为前端必知必会-程序员宅基地

文章浏览阅读638次,点赞12次,收藏28次。优点:实现比较简单,执行环境相对单纯缺点:只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行。常见的浏览器无响应(假死),往往就是因为某一段 Javascript 代码长时间运行(比如死循环),导致整个页面卡在这个地方,其他任务无法执行。为了解决这个问题,JavaScript 语言将任务的执行模式分为两种:同步和异步。

Python 学习路线思维导图, 经典收藏!-程序员宅基地

文章浏览阅读271次。目前为止,我总结了Python的知识体系,并且暂时包括了十五章内容。 Python简介 基础知识 列表和元祖 字符串 字典 条件、循环和其他语句 抽象 更加抽象 异常 魔法方法、属性和迭代器 模块 文件和流 图形用户界面 数据库支持 网络编程 ...

PHP 系统学习-程序员宅基地

文章浏览阅读640次。define("god","123",true);// 定义常量(true 为不区分大小写)constant("god")."";//输出常量echo (define("god").""); //输出常量是否被定义 预定义变量echo $_SERVER["SERVER_ADDR"];//服务器ip地址 echo $_SERVER["SERVER_NAME"];//

反常积分发散-程序员宅基地

文章浏览阅读6.3k次。反常积分与暇点反常积分又叫广义积分,是对普通定积分的推广,指含有无穷上限/下限,或者被积函数含有瑕点的积分,前者称为无穷限广义积分,后者称为瑕积分(又称无界函数的反常积分)。如果函数f(x)在点a的一个邻域内无界,那么点a称为函数f(x)的瑕点(也称无界间断点)。无界函数的反常积分又称为瑕积分。反常积分的敛散性参考:https://zhuanlan.zhihu.com/p/101310338..._反常积分发散