1.数组的输出方式
//数组的输出方式
public class Division {
public static void main(String args[]){
String str = "192.168.0.1";
//按照“.”进行分割,使用转义字符“\\.”
String[] firstArray = str.split("\\.");
String[] secondArray = str.split("\\.",2);
System.out.println("["+str+"]");
System.out.println("["+firstArray+"]");
System.out.println("["+secondArray+"]");
}
}
输出结果:
[[Ljava.lang.String;@74a14482]
原因:
这样输出的是数组的地址。
因为数组是一个对象,要打印数组只有:
1、for循环、while循环等一个个元素打印
2、用Arrays.toString()等方法打印
解决办法:
//数组的输出方式
public class Division {
public static void main(String args[]){
String str = "192.168.0.1";
//按照“.”进行分割,使用转义字符“\\.”
String[] firstArray = str.split("\\.");
String[] secondArray = str.split("\\.",2);
System.out.println("["+str+"]");
System.out.print("全部分割的结果:");
for (String a : firstArray){
System.out.print("["+a+"]");
}
System.out.println();//换行
System.out.print("分割两次的结果:");
for (String a : secondArray){
System.out.print("["+a+"]");
}
System.out.println();//换行
}
}
import java.util.Arrays;
//数组的输出方式
public class Division {
public static void main(String args[]){
String str = "192.168.0.1";
//按照“.”进行分割,使用转义字符“\\.”
String[] firstArray = str.split("\\.");
String[] secondArray = str.split("\\.",2);
System.out.println("["+str+"]");
System.out.print("全部分割的结果:");
/*for (String a : firstArray){
System.out.print("["+a+"]");
}
System.out.println();//换行
System.out.print("分割两次的结果:");
for (String a : secondArray){
System.out.print("["+a+"]");
}
System.out.println();//换行*/
System.out.println(Arrays.toString(firstArray));
System.out.print("分割两次的结果:");
System.out.println(Arrays.toString(secondArray));
}
}
两段代码运行结果:
这样看来,还是使用Arrays.toString()
方法更加简便一点。
2.数组查询二分搜索法元素不存在返回索引值
语法:
binarySearch(Object[] a,Object key)
如果key包含在数组中,则返回搜索值的索引;否则返回-1或”-“(插入点)。
插入点是搜索键将要插入数组的那一点,即第一个大于此键的元素索引。
package Array;
import java.util.Arrays;
/**
* Created by yxx on 2019/8/30.
*/
public class BinS {
public static void main(String args[]){
int arr[] = new int[]{4,25,10};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr,0,1,8);
System.out.println(index);
}
}
运行结果:
package Array;
import java.util.Arrays;
/**
* Created by yxx on 2019/8/30.
*/
public class BinS {
public static void main(String args[]){
int arr[] = new int[]{4,25,10};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr,0,1,10);
System.out.println(index);
}
}
运行结果:
原因:(为什么查询8和11返回值都是-2)
因为数组中不存在8和11,先对数组进行排序
fromIndex:0,toIndex:1
指的是数组arr中索引在0-1内的索引位置,所以,搜索时,只在4,25内进行,而8,11都是插在25前,所以,返回-2。
但是排序是将数组全部元素。
取消索引范围返回值就不一样了。
package Array;
import java.util.Arrays;
/**
* Created by yxx on 2019/8/30.
*/
public class BinS {
public static void main(String args[]){
int arr[] = new int[]{4,25,10};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr,8);
System.out.println(index);
}
}
运行结果:
package Array;
import java.util.Arrays;
/**
* Created by yxx on 2019/8/30.
*/
public class BinS {
public static void main(String args[]){
int arr[] = new int[]{4,25,10};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr,11);
System.out.println(index);
}
}
运行结果:
3.报错 The public type (*) must be defined in its own file
代码:
package Extends;
//继承机制
class Parent {
Parent() {
System.out.println("调用父类的Parent()构造方法");
}
}
class SubParent extends Parent{
SubParent() {
System.out.println("调用子类的SubParent()构造方法");
}
}
public class Subroutine extends SubParent{
Subroutine() {
System.out.println("调用子类的Subroutinr()构造方法");
}
public static void main(String args[]) {
Subroutine s = new Subroutine();
}
}
错误提示:The public type Subroutine must be defined in its own file
原因:
一个文件只能一个public 类,而且类名必须和文件名一样。
修改方法:
文件名与public类名一致即可。