Math
Math
类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。
与StrictMath
类的一些数字方法不同,Math类的StrictMath
所有Math
都没有定义为返回比特位相同的结果。 这种放松允许在不需要严格再现性的情况下执行更好的实现。
默认情况下,许多Math
方法只需调用中的对应方法是StrictMath
组织落实。 鼓励代码生成器使用平台特定的本机库或微处理器指令(如果可用),以提供Math
方法的Math
实现。 这种更高性能的实现仍然必须符合Math的Math
。
没有构造方法,如何使用类中的成员呢?
看类的成员是否都是静态的,如果是,通过类名就可以直接调用
代码的应用
package MathDemo;
public class MathDemo1 {
public static void main(String[] args) {
//返回参数绝对值
System.out.println(Math.abs(88));
System.out.println(Math.abs(-88));
System.out.println("----------------------");
//返回大于或者等于参数的最小double值,等于一个参数
System.out.println(Math.ceil(12.34));
System.out.println(Math.ceil(13.56));
System.out.println("-------------------------");
// 返回大于或者等于参数的最小double值,等于一个参数
System.out.println(Math.floor(12.34));
System.out.println(Math.floor(13.56));
System.out.println("------------------------");
//按照四舍五入返回最接近参数的int
System.out.println(Math.round(13.56F));
System.out.println(Math.round(13.56F));
System.out.println("------------------------");
System.out.println(Math.max(12,134));
System.out.println("-----------------------");
//返回a的b次幂
System.out.println(Math.pow(2.0,3.0));
System.out.println("-----------------------");
//返回为double的正值,\[0.0,1.0)
System.out.println(Math.random());
//返回\[0,100)的int随机数
System.out.println((int)(Math.random()\*100));
}
}
Object
Object类概述
类层次结构的根类,每个class都有object作为超类。
所有类都直接或者间接的继承自该类
所有对象(包括数组),都实现了这个类的方法
构造方法
Object类的成员方法
public int hashCode()
* public final class getClass()
* 返回此Object的运行时类。 返回的类对象是被表示类的static synchronized方法锁定的对象。
public class StudentTest {
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(s1.hashCode());//1163157884
Student s2 = new Student();
System.out.println(s2.hashCode());//1956725890
Student s3 = s1;
System.out.println(s3.hashCode());
System.out.println("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*");
Student s4 = new Student();
System.out.println(s4.getClass());
Class c = s4.getClass();
System.out.println(c.getName());
System.out.println("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*");
//链式编程
System.out.println(s4.getClass().getName());
}
}
* public String toString()
* 返回对象的字符串表示形式。一般来说,toString方法返回一个对象的字符串
* Integer类提供了一个静态的方法:
* public static String toHexString(int i)返回整数参数的字符串表示形式,作为16位中的无符号整数。
* 但是我们只拿到这样的结果com.shujia.java.day13.Student2@4554617c,是没有任何意义的
最终方案:类重写toString()方法* 总结:直接输出一个对象的名称,其实就是调用该对象的toString()方法</code></pre></li>
public class StudentTest2 {
public static void main(String[] args) {
Student2 s = new Student2();
System.out.println(s.hashCode());//1163157884
System.out.println(s.getClass().getName());//com.shujia.java.day13.Student2
System.out.println("**********************");
System.out.println(s.toString());//com.shujia.java.day13.Student2@4554617c
System.out.println("***************");
//toString()方法的值等价于以下内容
//s.getClass().getName()+"@"+Integer.toHexString(s.hashCode())
//this.getClass().getName()+"@"+Integer.toHexString(this.hashCode())
//com.shujia.java.day13.Student2@4554617c
//com.shujia.java.day13.Student2@4554617c
System.out.println(s.getClass().getName()+"@"+Integer.toHexString(s.hashCode()));
s.setName("xiaohua");
s.setAge(18);
System.out.println("重写后的方法:"+s.toString());
}
}
* public boolean equals(Object obj)
* 指示一些其他对象是否等于此。
这个放啊,默认情况下,比较的是地址值,但是呢,比较地址值是没有意义的,更多情况下
我们比较对象中成员变量的值是否一样,所以想到的是重写方法* (==):
基本类型,比较的是值是否相同
引用类型:比较的是地址值是否相同
(equals):
引用类型:默认情况下,比较的是地址值
不过,根据情况重写,可以自己重写,也可以自动生成</code></pre>
protected void finalize()
- throws Throwable当垃圾回收器确定不再有对该对象的引用时,
垃圾回收器在对象上调用该对象。
一个子类覆盖了处理系统资源或执行其他清理的finalize方法。
简单来说,它就是用于垃圾回收的,但是呢,什么时候回收不确定
1、重写该方法
protected Object clone()
throws CloneNotSupportedException创建并返回此对象的副本。
返回的是这个实例的一个克隆。
public interface Cloneable一个类实现Cloneable接口,
以指示Object.clone()方法,该方法对于该类的实例进行现场复制是合法的。
public class StudentTest4 {
public static void main(String[] args) throws CloneNotSupportedException {
Student4 s = new Student4();
s.setName("xiaohua");
s.setAge(18);
System.out.println(s.toString());
Object c = s.clone();
//向下转型
Student4 sclone = (Student4)c;
System.out.println(s.getName()+"-------"+s.getAge());
System.out.println(sclone.getName()+"----------"+sclone.getAge());
Student4 s1 = s;
System.out.println(s1.getName()+"-------"+s1.getAge());
System.out.println("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*");
s1.setName("虎");
s1.setAge(24);
System.out.println(s.getName()+"-------"+s.getAge());
System.out.println(sclone.getName()+"----------"+sclone.getAge());
System.out.println(s1.getName()+"-------"+s1.getAge());
}
}
String
字符串:简单理解,就是由多个字符组成的一串数据。同理,所以也能看成一个字符数组
通过查看API,发现,
String类代表字符串。
Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。
1、字符串字面值"abc"也可以堪称一个字符串对象
2、字符串是常量,一旦被赋值,就不能被改变
构造方法
字符串方法
package StringDemo;
public class StringDemo1 {
public static void main(String[] args) {
String s = new String ();
System.out.println("s"+s);
System.out.println("s的长度"+s.length());
System.out.println("*****************************");
//将字节数组转换成字符串
byte\[\] b = {97,99,88,56,23,32};
String s1 = new String(b);
System.out.println("S1"+s1);
System.out.println(s1.length());
System.out.println("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*");
// //public String(byte\[\] bytes,int offset,int length)
//将字节数组的一部分截取成字符串
String s2 = new String(b,2,3);
System.out.println("s2"+s2);
System.out.println(s2.length());
System.out.println("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*");
//public String(char\[\] value) 将字符数组转化成字符串
char\[\] c = {'a','b','c','d','e','我','爱','冯','提','莫'};
String s3 = new String(c);
System.out.println("s3"+s3);
System.out.println(s3.length());
System.out.println("--------------------------------");
//public String(char\[\] value,int offset,int count)
//将字符数组的一部分转化成字符串
String s4 = new String(c,3,5);
System.out.println("s4"+s4);
System.out.println(s4.length());
System.out.println("--------------------------------");
//public String(String original)
//将字符串常量转化成字符串对象
String s5 = new String("abcefd");
System.out.println("s5 "+s5);
System.out.println(s5.length());
}
}
String的转换功能:
String的转换功能:
byte[] getBytes()
char[] toCharArray()
static String valueOf(char[] chs)
static String valueOf(int i)
String toLowerCase()
String toUpperCase()
String concat(String str)
public class StringDemo10 {
public static void main(String[] args) {
String s = "BigData";
//byte\[\] getBytes() 将字符串转换成字节数组
byte\[\] bytes = s.getBytes();
// System.out.println(bytes);
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
System.out.println("**********************");
//char\[\] toCharArray() 将字符串转化成字符数组
char\[\] c = s.toCharArray();
// System.out.println(c);
for (int i = 0; i < c.length; i++) {
System.out.println(c[i]);
}
System.out.println("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*");
//static String valueOf(char\[\] chs) 将字符数组转化成字符串
String s1 = String.valueOf(c);
System.out.println(s1);
System.out.println("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*");
//static String valueOf(int i) 将int类型数据转化成字符串
String s2 = String.valueOf(100);
System.out.println(s2);
System.out.println("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*");
//String toLowerCase() 将字符串中的字符转成小写
String s3 = s.toLowerCase();
System.out.println(s3);
System.out.println(s);
System.out.println("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*");
// String toUpperCase()
String s4 = s.toUpperCase();
System.out.println(s4);
System.out.println("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*");
//String concat(String str) 把字符串拼接
String s5 = "Hello";
String s6 = "World";
String s7 = s5+s6;
String s8 = s5.concat(s6);
System.out.println("s5:"+s5); //
System.out.println("s6:"+s6);
System.out.println("s7:"+s7);
System.out.println("s8:"+s8);
}
}
package StringDemo;
/*
把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
举例:helloWOrld ---- 结果:Helloworld
分析:
第一种方式:
1、先获取到第一个字符
2、获取除了第一个其余的字符
3、把第一步转成大写
4、把第二部转成小写
5、把第三步和第四步拼接起来
第二种方式:
1、把字符串全部转成小写
2、取第一个字符
3、将第二步转成大写
*/
public class StringDemo2 {
public static void main(String[] args) {
//定义一个字符串
String s = "helloWorld";
//先获取到第一个字符
String s1 = s.substring(0,1);
// System.out.println(s1);
//获取除了第一个其余的字符
String s2 = s.substring(1);
// System.out.println(s2);
// 把第一步转成大写
String start = s1.toUpperCase();
// System.out.println(start);
//把第二部转成小写
String other = s2.toLowerCase();
// System.out.println(other);
//把第三步和第四步拼接起来
String result = start.concat(other);
System.out.println(result);
System.out.println("-------------链式编程改进----------------");
String concat = s.substring(0,1).toUpperCase().concat(s.substring(1).toLowerCase());
System.out.println(concat);
}
}
String类的其他功能
替换功能
String replace(char old,char new)
String replace(String old,String new)
去除字符串两空格
按字典顺序比较两个字符串
int compareTo(String str)
int compareToIgnoreCase(String str)
package StringDemo;
/*
替换功能
String replace(char old,char new)
String replace(String old,String new)
去除字符串两空格
String trim()
按字典顺序比较两个字符串
int compareTo(String str)
int compareToIgnoreCase(String str)
*/
public class StringDemo3 {
public static void main(String[] args) {
String s = "helloworld";
//将字符串中所有的l替换成k,返回一个新的字符串
String s1 = s.replace('l','k');
//将字符串中指定的字符串替换成新的字符串,返回一个新的字符串
String s2 = s.replace("owo","ww");
System.out.println(s);
System.out.println(s1);
System.out.println(s2);
//String trim()
String s3 = " hello world ";
String s4 = s3.trim();
System.out.println(s3);
//去除头尾空格
System.out.println(s4);
//按字典顺序比较两个字符串
//int compareTo(String str)
String s5 = "hello"; //h的ASCLL码值是104
String s6 = "hello";
String s7 = "abc"; //a的ASCLL码值是97
String s8 = "qwe"; //q的ASCLL码值是113
System.out.println(s5.compareTo(s6));// 0
System.out.println(s5.compareTo(s7));// 7
System.out.println(s5.compareTo(s8));// -9
}
}
/*
如果前面几个字符是一样的怎么办?
*/
public class StringDemo13 {
public static void main(String[] args) {
String s = "hello";
String s2 = "hel";
System.out.println(s.compareTo(s2)); // 2 = s.length - s2.length
}
}
String类的练习
把数组中的数据按照指定个格式拼接成一个字符串
举例:int[] arr = {1,2,3}; 输出结果:[1, 2, 3]
package StringDemo;
/*
把数组中的数据按照指定个格式拼接成一个字符串
举例:int[] arr = {1,2,3};
输出结果:[1, 2, 3]
分析:
1、定义一个空字符串对象
2、先把字符串前面拼接一个"\["
3、遍历int数组,得到每一个元素
4、判断是否读到最后一个,如果是最后一个,在尾部拼接"\]"
5、输出
*/
public class StringDemo4 {
public static void main(String[] args) {
int [] arr ={1,2,3};
//定义一个空字符串对象
String s = "";
//先把字符串前面拼接一个"\["
s += "\[";
//遍历int数组,得到每一个元素
for (int i = 0; i <arr.length ; i++) {
//4、判断是否读到最后一个,如果是最后一个,在尾部拼接"\]"
if (i == arr.length-1){
s+=arr\[i\];
s+="\]";
}
else {
s += arr\[i\];
s += ";";
}
}
System.out.println(s);
}
}
/*
字符串反转
举例:键盘录入”abc”
输出结果:”cba”
分析:
1、键盘录入一个字符串
2、定义一个空字符串
3、将字符串转成字符数组
4、倒着遍历字符串,得到每一个字符
5、用新的字符串拼接得到每一个字符
6、输出
*/
public class StringDemo5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String oldString = sc.next();
//定义一个空字符串
String newString = "";
//将字符串转成字符数组
char\[\] charArrays = oldString.toCharArray();
//倒着遍历字符串,得到每一个字符
for (int i = charArrays.length-1; i >=0 ; i--) {
//用新的字符串拼接得到每一个字符
newString += charArrays\[i\];
}
//输出
System.out.println(newString);
}
}
package StringDemo;
import java.util.Scanner;
/*
统计大串中小串出现的次数
举例:
在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagunefdsrfdsfdsfsdfwfwrfewrefsdfsjavadaddasdasdadadasjvadoiqwopeioandbuiabubjava”
中java出现了5次
*/
public class StringDemo6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//定义一个字符串
//String maxString = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagunefdsrfdsfdsfsdfwfwrfewrefsdfsjavadaddasdasdadadasjvadoiqwopeioandbuiabubjava";
//定义一个小串
//String minString = "java";
System.out.println("请输入字符串:");
String maxString = sc.next();
System.out.println("请输入要查找的字符串:");
String minString = sc.next();
int result = findSting(maxString,minString);
System.out.println("大串中小串出现的次数为:"+result);
}
public static int findSting(String maxString , String minString){
//定义一个统计变量
int count = 0 ;
//在大串中找到小串第一次出现的位置
int index = maxString.indexOf(minString);
if(index == -1 ){
System.out.println("在大串中没有小串:"+ minString);
return 0;
}
while (index != -1){
count++;
int startIndex = index + minString.length();
maxString = maxString.substring(startIndex);
index = maxString.indexOf(minString);
}
return count;
}
}
StringBuffer类
StringBuffer类的概述及其构造方法
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题
线程安全的可变字符序列
StringBuffer和String的区别?
前者长度和内容可以发生改变、后者不可改变
前者可以提前给出缓冲区,可以进行字符串拼接不会重新开辟空间
后者会重新开辟空间,会浪费太多资源
构造方法
public StringBuffer()
public StringBuffer(int capacity)
public StringBuffer(String str)
StringBuffer的方法:
public int capacity()返回当前容量。
容量是新插入字符可用的存储量,超过此值将进行分配。
public int length()返回长度(字符数)
package com.shujia.java.day14;
/*
1、线程安全的
2、安全,代表着有同步存在,数据是安全的,效率不高
3、不安全,不同步,效率高
4、安全问题和效率问题一直都是一个矛盾点
5、生活中,哪些案例是安全和效率
6、安全:售票、医院取号、银行的一些业务
7、效率:论坛、视频会员…
StringBuffer:
线程安全,可变的字符序列。字符串缓冲区就像一个String,但可以修改。
在任何时间点,它包含一些特定的字符序列,
但可以通过某些方法调用来更改序列的长度和内容
简单来说:它就是一个线程安全的可变字符串
StringBuffer和String的区别?
1、前者长度和内容可以发生改变、后者不可改变
2、前者可以提前给出缓冲区,可以进行字符串拼接不会重新开辟空间
后者会重新开辟空间,会浪费太多资源
StringBuffer的构造方法:
public StringBuffer()
public StringBuffer(int capacity)
public StringBuffer(String str)
StringBuffer的方法:
public int capacity()返回当前容量。
容量是新插入字符可用的存储量,超过此值将进行分配。
public int length()返回长度(字符数)。
*/
public class StringBufferDemo1 {
public static void main(String[] args) {
//public StringBuffer() 无参构造方法
StringBuffer sb = new StringBuffer();
//重写了toSting()方法
System.out.println("sb:"+sb);
System.out.println(sb.capacity()); //16
System.out.println(sb.length());
//public StringBuffer(int capacity)
StringBuffer sb2 = new StringBuffer(50);
System.out.println(sb2);
System.out.println(sb2.capacity()); //50
System.out.println(sb2.length()); //0
//public StringBuffer(String str)
StringBuffer sb3 = new StringBuffer("hello");
System.out.println(sb3);
System.out.println(sb3.capacity()); //21 16 + 5
System.out.println(sb3.length()); //5
}
}
添加功能
public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)
package StringBufferDemo;
/*
StringBuffer:
添加功能
public StringBuffer append(String str)
可以把任意类型的数据添加到字符串缓冲区里面
并且返回的是字符串缓冲区本身
public StringBuffer insert(int offset,String str)
在指定位置插入数据到字符串缓冲区里面
*/
public class StringBufferDemo1 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
//public StringBuffer append(String str)
StringBuffer sb2 = sb.append("hello");
System.out.println(sb2);
System.out.println(sb);
System.out.println(sb == sb2);
// sb.append(true);
// sb.append(10);
// sb.append(12.34);
// System.out.println(sb);
// System.out.println(sb2);
//链式编程
sb.append(true).append(10).append(12.13).append(12313.123);
System.out.println(sb);
//public StringBuffer insert(int offset,String str)
//在指定索引位置上,插入某字符串
sb.insert(5,"java'");
System.out.println(sb);
}
}
删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)
package StringBufferDemo;
/*
删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)
*/
public class StringBufferDemo2 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("hello").append("java").append("bigdata'");
System.out.println(sb);
System.out.println("--------------------------------------'");
//public StringBuffer deleteCharAt(int index)
//删除指定位置的字符,并返回本身
// sb.deleteCharAt(5);
// System.out.println(sb);
//
// sb.deleteCharAt(0);
// System.out.println(sb);
//public StringBuffer delete(int start,int end)
//左闭右开
sb.delete(3,5);
System.out.println(sb);
System.out.println("-------------------------------------");
//删除所有字符串
sb.delete(0,sb.length());
System.out.println(sb);
}
}
替换功能
package StringBufferDemo;
/*
public StringBuffer replace(int start,
int end,
String str)用指定的String中的字符替换此序列的子字符串中的String 。
子串开始于指定start并延伸到字符索引end - 1 ,或如果没有这样的字符存在的序列的结束。
第一子串中的字符被去除,然后指定String被插入在start 。
(如果需要,此序列将被延长以容纳指定的字符串。)
*/
public class StringBufferDemo3 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("hello").append("java").append("bigdata");
System.out.println(sb);
//public StringBuffer replace(int start,
// int end,
// String str)
sb.replace(5,9,"数加");
System.out.println(sb);
}
}
反转功能
package StringBufferDemo;
/*
public StringBuffer reverse()导致该字符序列被序列的相反代替。
如果序列中包含任何替代对,则将它们视为单个字符进行反向操作。
*/
public class StringBufferDemo4 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("我爱你");
System.out.println(sb);
sb.reverse();
System.out.println(sb);
}
}
截取功能
/*
截取功能:注意此时的返回值类型就不再是StringBuffer类型了
返回值类型是String类型,本身没有发生改变
public String substring(int start)
public String substring(int start,int end)
*/
public class StringBufferDemo6 {
public static void main(String[] args) {
//创建字符串缓冲区对象
StringBuffer sb = new StringBuffer();
sb.append("hello").append("world").append("bigdata");
System.out.println(sb);
//截取功能
//public String substring(int start)
String s = sb.substring(5);
System.out.println(s); //worldbigdata
System.out.println(sb); //helloworldbigdata
//public String substring(int start,int end)
String s2 = sb.substring(5, 10);
System.out.println(s2);
System.out.println(sb);
}
}
截取功能和前面几个功能的不同
StringBuffer类练习
String和StringBuffer的相互转换
package StringBufferDemo;
/*
String和StringBuffer的相互转换
A -- B的转换,把A转化成B,为了是使用B的功能
B -- A,把B转换成A,结果可能就是需要A类型,所以还得转回来
String和StringBuffer的相互转换
*/
public class StringBufferDemo5 {
public static void main(String[] args) {
// String -- StringBuffer
String s = "hello";
//注意:不能把字符串String类型赋给StringBuffer类型
// StringBuffer sb = s;
// StringBuffer sb = "hello";
//方式1:通过构造方法
StringBuffer sb = new StringBuffer(s);
System.out.println(s);
//方法2:调用StringBuffer的append方法
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(s);
System.out.println(stringBuffer);
//StringBuffer -- String
StringBuffer sb2 = new StringBuffer("bigdata");
//方式1:调用String的构造方法
String s1 = new String(sb2);
System.out.println(s1);
//方式2:调用StringBuffer的toString()方法
String s2 =sb2.toString();
System.out.println(s2);
}
}
package StringBufferDemo;
/*
把数组拼接成一个字符串
*/
public class StringBufferDemo6 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {11,2,3,4,56,2,3,45,6};
//方式1:用String拼接
String s = "";
s += "\[";
for (int i = 0; i < arr.length; i++) {
if(i == arr.length-1){
s += arr\[i\];
s += "\]";
}else {
s += arr\[i\];
s+=",";
}
}
System.out.println(s);
System.out.println("-----------------------------------");
//方式2:用StringBuffer拼接
StringBuffer sb = new StringBuffer();
sb.append('\[');
for (int i = 0; i <arr.length ; i++) {
if(i == arr.length-1){
sb.append(arr\[i\]).append("\]");
}else {
sb.append(arr\[i\]).append(",");
}
}
System.out.println(sb);
}
}
package StringBufferDemo;
import java.util.Scanner;
/*
把字符串反转
*/
public class StringBufferDemo7 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数据:");
String stringLine = sc.next();
//方式1:用String拼接
String result = "";
//将输入的字符串转化成字符数组
char\[\] charArray = stringLine.toCharArray();
for (int i = charArray.length - 1; i>= 0 ; i--) {
result += charArray\[i\];
}
System.out.println(result);
System.out.println("-------------------------------");
//方式2:利用StringBuffer的reverse()方法
StringBuffer stringBuffer = new StringBuffer(stringLine);
StringBuffer stringBuffer1 = stringBuffer.reverse();
String s = stringBuffer1.toString();
System.out.println(s);
System.out.println(new StringBuffer(stringLine).reverse().toString());
}
}
判断一个字符串是否是对称字符串
例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
package StringBufferDemo;
import java.util.Scanner;
/*
判断一个字符串是否是对称字符串
例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
分析:
1、第一个字符和最后一个字符比较
2、第二个字符与倒数第二个字符比较
...
比较的次数:长度/2
*/
public class StringBufferDemo8 {
public static void main(String[] args) {
//键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入想要判断的字符串:");
String stringLine = sc.next();
//方式1:一个一个比较
//将输入的字符串转化成字符数组
// char[] charArray = stringLine.toCharArray();
// boolean flag = true;
//
// for (int start = 0, end = charArray.length - 1; start <= end; start++, end--) {
// if (charArray[start] != charArray[end]) {
// System.out.println("该字符串不是对称字符串");
// flag = false;
// break;
// }
// }
// if (flag) {
// System.out.println("字符串是对称字符串");
// }
//方式2:利用StringBuffer的反转方法
//将String转换成StringBuffer
// StringBuffer sb1 = new StringBuffer(stringLine);
// StringBuffer stringBuffer = sb1.reverse();
// //将反转后的StringBuffer转化成String类型
// String s = stringBuffer.toString();
String s = new StringBuffer(stringLine).reverse().toString();
if(s.equals(stringLine)){
System.out.println("字符串是对称字符串");
}else {
System.out.println("该字符串不是对称字符串");
}
}
}
StringBuffer类面试题
通过查看API了解一下StringBuilder类
String,StringBuffer,StringBuilder的区别
String的内容是不可变的,而StringBuffer和StringBuilder的内容是可以变的
StringBuffer是同步线程安全的,数据安全,效率低
StringBuilder是不同步的,数据不安全,效率高
StringBuffer和数组的区别
看程序写结果:
String作为参数传递
StringBuffer作为参数传递
3、看程序写结果:
String作为参数传递
StringBuffer作为参数传递
*/
public class StringBufferDemo9 {
public static void main(String[] args) {
String s1 = "hello";
String s2 = "world";
System.out.println(s1+"---"+s2); //hello---world
change(s1,s2);
System.out.println(s1+"---"+s2); //hello---world
StringBuffer sb1 = new StringBuffer("hello");
StringBuffer sb2 = new StringBuffer("world");
System.out.println(sb1+"---"+sb2); //hello---world
change2(sb1,sb2);
System.out.println(sb1+"---"+sb2); //hello---worldworld
}
public static void change2(StringBuffer sb1,StringBuffer sb2){
sb1 = sb2;
sb2.append(sb1);
}
public static void change(String s1,String s2){
s1 = s2;
s2 = s1+s2;
}
}
Arrays
Arrays类的概述和常用方法
package Arrays;
import java.util.ArrayList;
import java.util.Arrays;
public class Arraysdemo {
public static void main(String[] args) {
//定义一个数组
int[] arr = {24,89,21,34,121};
System.out.println("排序前"+ Arrays.toString(arr));
//对数组元素进行从小到大排序
Arrays.sort(arr);
System.out.println("排序后"+Arrays.toString(arr));
}
}
工具类的设计思想
Integer类的概述和使用
代码的实现
package Arrays;
public class integerDemo {
public static void main(String[] args) {
/* //public Integer(int value),根据 int 值创建Integer 对象(过时)
Integer i1 = new Integer(100);
System.out.println(i1);
//public Integer(String s),根据String 值创建Integer对象(过时)
Integer i2 = new Integer("100");
System.out.println(i2);
\*/
// public static Integer valueOf(int i),返回表示指定的int值的Integer实例
Integer i1 = Integer.valueOf(100);
System.out.println(i1);
// public static Integer valueOf(String i),返回一个保存指定值的Integer 对象 String
Integer i2 = Integer.valueOf("100");
System.out.println(i2);
}
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章