存在的问题:当录入数据的顺序依次是int String,并且分别使用nextInt()和next()方法获取数据的时候,
会接受不到String数据。
解决办法:
1. 在录入完int后重新创建一个新的Scanner对象
2. 用字符串接受,然后把字符串转成int类型。
System 常用方法:
1 exit();终止当前正在运行的 Java 虚拟机。
2 currentTimeMillis()
返回以毫秒为单位的当前时间。
int[] arr = { 1, 2, 3, 4, 5 };
int[] arr2 = { 5, 6, 7, 8, 9 };
System.arraycopy(arr, 3, arr2, 3, 2);
System.out.println(Arrays.toString(arr));//[1,2,3,4,5]
System.out.println(Arrays.toString(arr2));//[5,6,7,4,5]
Arrays(针对基本数据类型数组(含Object)操作的工具类)和Array 的区别,别混淆了:
Arrays常用方法总结:
int binarySeach(基本数据类型数组,key);返回的是int类型的索引值。
sort(char[] a) sort()里面包含char int byte
对指定的 char 型数组按数字升序进行排序。
sort(char[] a, int fromIndex, int toIndex)
对指定 char 型数组的指定范围按数字升序进行排序
String toString(基本数据类型[] a)
public static int binarySearch(int[] a,int key):对数组进行二分查找。
int[] arr2 = { 12, 23, 34, 45, 56, 67 };
查找23的索引
System.out.println(Arrays.binarySearch(arr2, 23));//1
查找27的索引
System.out.println(Arrays.binarySearch(arr2, 27));//-3
对字符串数组进行排序
将字符数组转化成String的方式:
1 String类的构造方法() 中可以把int char byte类型的数组转化成字符数组。
2 String的静态方法 String valueOf();可以将八种基本数据类型数据转化成String类型,以及能将char类型数组转化成String;
3 static String copyValueOf(char[] data)
返回指定数组中表示该字符序列的 String。
static String copyValueOf(char[] data, int offset, int count)
返回指定数组中表示该字符序列的 String
4 利用Arrays数组中的static String toString(基本数据类型[] a)
返回指定数组内容的字符串表示形式。
StringBuffer的构造方法:
StringBuffer sb=new StringBuffer();
StringBuffer sb1=new StringBuffer(10);
StringBuffer sb2=new StringBuffer("abc");
System.out.println(sb.capacity());//16
System.out.println(sb.length());//0
System.out.println(sb1.capacity());//10
System.out.println(sb1.length());//0
System.out.println(sb2.capacity());//19
System.out.println(sb2.length());//3
StringBuffer和String的区别:
String一旦被赋值,值不能发生改变。而StringBuffer,值还可以改变。
* 为什么呢?
StringBuffer采用的是缓冲区机制。
一开始,首先开辟一些空间,然后,随着数据的最多,然后,还可以继续开辟空间。这些操作针对的是同一个对象。
StringBuffer的append(),delete ,insert()等方法返回的是StringBuffer类型。substring返回的是String类型
sb.append(100).append("hello").append("world").append('男').insert(6, "nihao");
//sb.insert(6,"nihao");
System.out.println(sb);//错:100hellonihaoworld男
//true:100helnihaoloworld男
sb1.append(100).append(200).append(234).insert(2,90);
System.out.println(sb1);
//true10900200234
//false 而不是10020090234因为append和insert返回的都是StringBuffer类型。
练习,从键盘输入字符串,请把字符串的数据反转后输出
class StringBufferTest2
{
public static void main(String[] args)
{
Scanner sca = new Scanner(System.in);
System.out.println("请输入一串字符串");
String str=sca.nextLine();
StringBuffer sb=new StringBuffer(str);
System.out.println(sb.reverse());
System.out.println("**************");
reversalString("abcde");
}
public static void reversalString(String str)//利用for循环,将它反向输出
{
char[] ch=str.toCharArray();
for(int i=ch.length-1;i>=0;i--)
{
System.out.print(ch[i]);
}
}
}
StringBuffer转化成String的方式:
StringBuffer sb=new StringBuffer("abcdeff")
1 构造方法 String string=new String(new StringBuffer());
2 StringBuffer中的 substring方法 : String str1=sb.substring(0);
3 StringBuffer中的toString()方法:String str2=sb.toString();
String转化成StringBuffer的方式:
1构造方法 StringBuffer sb=new StringBuffer("abcde");
目前就想到了这一种方法,还望大家做补充。
instaceof复习;
String str="adcs";
boolean bl=str instanceof Object;左边一定要写,否则会编译报错;
Integer总结:
Integer i1=new Integer(10);
Integer i2=new Integer("20");
以下两个会产生运行时异常
Integer i3=new Integer("20.11")
Integer i4=new Integer("abc");
把String转化成int:
Integer i1=new Integer("30");
int num1=i1.intValue();
int num2=Integer.valueOf("45").intValue();
int num3=Integer.parseInt("458");
String str1=4+"";
String str2=new Integer(4).toString();//toString()
String str3=Integer.toString(4);//toString(int n);
String str4=String.valueOf(4);
//JDK7.0新特性
//自动封箱也就是把基本类型直接赋值给引用类型
Integer in1=1;//底层Integer in1=new Integer(1);
Integer in2=1+1;
//自动拆箱:把引用数据类型直接赋值给基本数据类型
Integer ii=new Integer(100);
int ii2=ii+100;//底层 ii.valueInt()+100;
ii=ii+100;//底层 Integer(ii.valueInt()+100)
关于Integer的面试题:
byte常量池。
也就是byte范围内的值,直接赋值给Integer,是从常量池里面获取的。
Integer i5 = 128;
Integer i6 = 128;
System.out.println(i5 == i6);// false
System.out.println(i5.equals(i6));// true
System.out.println("--------");
Integer i7 = 127;
Integer i8 = 127;
System.out.println(i7 == i8);// true
System.out.println(i7.equals(i8));// true
练习题:
/** 需求:
* 我现在有一个字符串"23 98 71 54 60"
* 请你先办法,把这个字符串变成如下字符串:
* "23 54 60 71 98"
* 思路:
* 1将字符串去空格
* 2将字符串转化为Integer
* 3转化为int型数组,对其进行排序
* 4再将其转化为字符串
*
* */
class IntegerTest2 {
public static void main(String[] args) {
String str="23 98 71 54 60";
String[] str1=str.split(" ");//去空格,将字符串转化为字符串数组
int[] in=new int[5];
for(int i=0;i<str1.length;i++)
{
in[i]=Integer.parseInt(str1[i]);//将字符串数组转化为int数组
}
Arrays.sort(in);//对int数组进行排序
/*for(int i=0;i<in.length;i++)//将int数组转化为String
{
str1[i]=String.valueOf(in[i]);
if(i==4)
System.out.println(str1[i]);
else
System.out.print(str1[i]+" ");
}*/
StringBuffer sb=new StringBuffer();//用StringBuffer对象来接收
for(int i=0;i<in.length;i++)//将int[]转化为String[]
{
str1[i]=String.valueOf(in[i]);
sb.append(str1[i]).append(" ");//
}
String ss=sb.toString().trim();//将StringBuffer转化为String再去空格
System.out.println(ss);
}
}
|
|