A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© I空空 中级黑马   /  2015-1-3 23:44  /  901 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


存在的问题:当录入数据的顺序依次是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);
   
}
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马