Java基础 17

版权声明: https://blog.csdn.net/qq_40794602/article/details/87070948

数组的二分查找:

	public static int getIndex(int[] arr, int find) {
		int min = 0;
		int max = arr.length - 1;
		int mid = (min + max) / 2;
		while (find != arr[mid]) {
			if (find < arr[mid]) {
				max = mid - 1;
			} else {
				min = mid + 1;
			}
			mid = (min + max) / 2;
			if (min > max) {
				return -1;
			}
		}
		return mid;
	}

Arrays类概述:

  • 针对数组进行操作的工具类。
  • 提供的方法都是通过类方法调用,因为构造方法被私有了
  • 提供了排序,查找等功能。
  • 查看API文档
  • EG:
    import java.util.Arrays;
    
    public class J2 {
    
    	public static void main(String[] args) {
    		
    		int[] arr1 = {28,12,38,11,10};
    		
    		//1.toString方法->把数组转成固定格式的字符串
    		System.out.println(Arrays.toString(arr1));
    
    		//2.sort 排序
    		Arrays.sort(arr1);
    		System.out.println(Arrays.toString(arr1));
    		
    		//3.binarySearch 二分法检索(binary search)又称折半检索
    		//二分查找(binary search)又称折半查找
    		//如果找不到元素,都用负数表示,表示你这个数应该插入的位置
    		int index = Arrays.binarySearch(arr1, 30);
    		System.out.println(index);
    	}
    
    }

基本数据类型包装类的概述:

为什么会有基本类型包装类:

  • 将基本数据类型封装成对象,这样的好处在于可以在对象中定义更多方法操作该数据;
  • 包装类常用操作就是用于基本数据类型与字符串之间的转换。

基本类型对应的包装类:

  • byte       Byte
  • short      Short
  • int Integer [先学习这个,其它的后面用到再讲]
  • long Long
  • float Float
  • double    Double
  • char      Character
  • boolean   Boolean

EG:

	public static void main(String[] args) {
		
		int a = 100;//请把a转成字符串类型
		//String s = (String)a;
		
		//1.构造方法
		/*Integer(int value) 
                     构造一个新分配的 Integer 对象,它表示指定的 int 值。*/
		Integer integer = new Integer(a);
		String s = integer.toString();
		System.out.println("s:" + s);
		
		//2.Integer的静态属性
		System.out.println("int最小值:" + Integer.MIN_VALUE);
		System.out.println("int最大值:" + Integer.MAX_VALUE);
		
		//3.Integer的其它方法
		//把int转成2进制的字符串
		System.out.println(Integer.toBinaryString(8));//8的二进制1000
		
		//把int转成8进制的字符串
		System.out.println(Integer.toOctalString(9));//9的8进制是11
		
		//把int转成16进制的字符串
		System.out.println(Integer.toHexString(17));//17的16进制11
	}

String和int类型的相互转换:

	public static void main(String[] args) {
		
		//String和int类型的相互转换
//		一、int 转 String
		int a = 120;
//		1.1和""进行拼接
		String s1 = a + "";
		
//		1.2public static String valueOf(int i) (String类方法)
		String s2 = String.valueOf(a);
		
//		1.3int -- Integer -- String(Integer类的toString方法())
		Integer integer = new Integer(a);
		String s3 = integer.toString();
		
//		1.4public static String toString(int i)(Integer类的方法)
		String s4 = Integer.toString(a);
		
		System.out.println("s1:" + s1);
		System.out.println("s2:" + s2);
		System.out.println("s3:" + s3);
		System.out.println("s4:" + s4);
		
//		二、String 转 int
		String str = "520";
//		String -- Integer – int
		Integer int1 = new Integer(str);
		int b = int1.intValue();
		
//		public static int parseInt(String s) [常用]
		int c = Integer.parseInt(str);
		
		System.out.println("b:" + b);
		System.out.println("c:" + c);
	}

JDK5的新特性:

  • 自动装箱:把基本类型转换为包装类类型
  • 自动拆箱:把包装类类型转换为基本类型
  • EG:
    	public static void main(String[] args) {
    		
    //		1.自动装箱:把基本类型转换为包装类类型 
    		/*int a = 10;
    		Integer i = new Integer(a);*/
    		
    		Integer i1 = 10;//内部会自动new Integer(10)
    		System.out.println("i1:" + i1);
    		
    //		2.自动拆箱:把包装类类型转换为基本类型
    		Integer i2 = new Integer(120);
    		int a = i2;//内部会调用i2.intValue()
    		
    	}

装箱拆箱面试题:

	/**
	 * 考点Integer内部装箱的实现
	 *
	 */

		public static void main(String[] args) {

			//看程序写结果		
			Integer i1 = new Integer(97);
			Integer i2 = new Integer(97);
			System.out.println(i1 == i2);//false
			System.out.println(i1.equals(i2));//true
			System.out.println("-----------");
		
			Integer i3 = new Integer(197);
			Integer i4 = new Integer(197);
			System.out.println(i3 == i4);//false
			System.out.println(i3.equals(i4));//true
			System.out.println("-----------");

			Integer i5 = -127;//自动装箱
			Integer i6 = -127;
			/**
			 * 自动装箱,如果值一样,地址也一样
			 * 自动装箱,范围在-128 ~ 127 【256个数】的地址一样,其它范围地址不一样
			 * 因为内部有个Integer的缓冲池
			 */
			System.out.println(i5 == i6);//true
			System.out.println(i5.equals(i6));//true
			System.out.println("-----------");

			Integer i7 = -129;
			Integer i8 = -129;
			System.out.println(i7 == i8);//false
			System.out.println(i7.equals(i8));//true

		}

Math类概述和方法使用:

  • Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
  • EG:
    	public static void main(String[] args) {
    		
    //		Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
    //		成员方法(更多方法需要自己查看API)
    //		1.public static int abs(int a) 取绝对值
    		System.out.println(Math.abs(-110));
    		
    //		2.public static double ceil(double a) //向上(往大数)取整
    		System.out.println(Math.ceil(3.14));
    		System.out.println(Math.ceil(-3.14));
    		
    //		public static double floor(double a) // 向下(往小数)取整
    		System.out.println(Math.floor(3.14));
    		System.out.println(Math.floor(-3.14));
    		
    //		public static int max(int a,int b) 取最大值, min方法自学
    		System.out.println(Math.max(-3, -5));
    		
    //		public static double pow(double a,double b) a^b a的b次方
    		System.out.println(Math.pow(4, 2));
    		
    //		public static double random() 生成0~0.99999的随机数
    		System.out.println(Math.random());
    		
    		
    //		public static int round(float a) 四舍五入取整数。
    		System.out.println(Math.round(3.46));
    		
    		
    //		public static double sqrt(double a) 值的正平方根
    		System.out.println(Math.sqrt(4));
    	}

Random类的概述和方法使用:

  • Random类的概述:此类用于产生随机数;如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
  • 构造方法:1.  public Random();2.  public Random(long seed)
  • 成员方法:1.   public int nextInt();2.  public int nextInt(int bound)(重点掌握)
	public static void main(String[] args) {
		
		Random r1 = new Random(10000);//相同种子
		Random r2 = new Random(10000);
		
		System.out.println(r1.nextInt());
		System.out.println(r2.nextInt());
		
		System.out.println("==============");
		System.out.println(r1.nextInt());
		System.out.println(r2.nextInt());
		
		System.out.println("==============");
		System.out.println(r1.nextInt());
		System.out.println(r2.nextInt());
	}

System类的概述和方法使用:

  • System 类包含一些有用的类字段和方法。它不能被实例化。
  • public static void gc()
  • public static void exit(int status)
  • public static long currentTimeMillis()
  • pubiic static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

猜你喜欢

转载自blog.csdn.net/qq_40794602/article/details/87070948