Day02-数组和字符串

  1. 掌握数组的基本用法
  2. 如何声明一个数组
  3. 如何分配空间
  4. 如何赋值
  5. 会应用数组解决简单问题
  6. 求平均值
  7. 求最大、最小值
  8. 排序
package com.WPF.arrayJava;

public class TestArray {
	public static void main(String[] args) {
		// 什么是数组
		// 1: 数组定长, 2:什么类型的数组里面放的是什么类型的数据
		// 整形变量的数组默认值都是 0 
		//byte[] arr = new byte[5];
		//short[] arr = new short[4];
		//int[] arr = new int[6];

		// 浮点型的数组默认值都是: 0.0
		//float[] arr = new float[3];

		//boolean[] arr = new boolean[5]; // 默认值是false

		char[] arr = new char[5]; // 默认值是一个空格

		// 往数组里面放数据
//		arr[0] = 12;  // 数组的每一个位置,就相当于这个类型的变量 
//		arr[1] = 2;
//		arr[3] = 4;
		// byte数组的每一个位置的默认值是0, 这个给默认值的过程叫 初始化;
		//System.out.println(arr[0]);
		//byte a = 0;
		//System.out.println(a);

		// 数组的遍历 : 就是把数组的每一个位置都访问一遍
		for (int i = 0; i < arr.length; i++) {
			System.out.println("----" + arr[i] + "----");
		}
		System.out.println("------------------");
		//-- 简单循环, 增强循环
//		for (boolean b : arr) {
//			System.out.println(b);
//		}

		char a = '\u0000'; // char的默认值
		System.out.println("---" + a + "---");

	}
}
package com.skeyedu.array;

public class TestArray2 {

	public static void main(String[] args) {
		//int[] arr = new int[6];    //动态初始化
		
		//int arr[] = {1,2,3,4,5,6,7}; //静态初始化
//		int[] arr = new int[] {11,22,33,44,55,66,77};
//		
//		for(int i=0; i<arr.length; i++) {
//			System.out.println(arr[i]);
//		}
		// -- 二维数组的定义
		//int[][] arr = new int[3][4];
		//arr[1][2] = 12;
		
		int[][] arr = { {11,12,13},{22,33,44,55,66},{333,444,555,666,777,888}};
		
		//System.out.println(arr[1][2]);
		// 二维数组的遍历
		
		// 第一个循环取每一层的值
		for(int i=0; i<arr.length; i++) {
			// 第二个循环,取每一个列的值
			for(int j=0; j< arr[i].length ; j++) {
				System.out.print(arr[i][j]+"\t");
			}
			System.out.println();
		}
		System.out.println("=======================");
		
		for (int[] is : arr) {
			for (int i : is) {
				System.out.print(i+"\t");
			}
			System.out.println();
		}
		
	}

}
package com.WPF.arrayJava;

public class TestArray3 {

	public static void main(String[] args) {
		// 多维数组
		int[][][] arr = new int[3][3][3];
		// 第一个循环; 取每一层
		for(int i=0; i<arr.length; i++) {
			// 第二个循环; 取的是每一个条
			for(int j=0; j<arr[i].length; j++) {
				// 第三个循环; 取的是第一个格子
				for(int k=0; k<arr[i][j].length; k++) {
					arr[i][j][k] = (i+1)*100 +(j+1)*10 + k+1;
				}
			}
		}
	// --- 三维数组的遍历  -------------
		// 第一个循环; 取每一层
		for(int i=0; i<arr.length; i++) {
			// 第二个循环; 取的是每一个条
			for(int j=0; j<arr[i].length; j++) {
				// 第三个循环; 取的是第一个格子
				for(int k=0; k<arr[i][j].length; k++) {
					System.out.print(arr[i][j][k]+"\t");
				}
				System.out.println();
			}
			System.out.println("-------------------");
		}

	}

}
package com.WPF.arrayJava;

import java.util.Arrays;

public class TestArray4 {

	public static void main(String[] args) {
		int[] arr = {32,11,5,78,99,100,2,9,102};
		
		// 得到数组里的最大值
/*		int max = 0;
		for(int i=0; i<arr.length; i++) {
			// 如果你比我大,那么,我就把你的值拿过来
			if(max < arr[i]) {
				max = arr[i];
			}
		}
		System.out.println(max);*/
		
		// 数组的排序
		/*Arrays.sort(arr);
		for(int i:arr) {
			System.out.print(i+"\t");
		}*/
		
		// 自定义排序
		/*
		int a = 1;
		int b = 999;
		// 值交换,应该有个第三方变量
		int temp = a;
		a = b;
		b = temp;
		*/
		int temp = 0;
		// 第一个循环,取每一个位置的值
		for(int i=0; i<arr.length; i++) {
			// 第二个循环,把取得的值,和后面的每一个位置进行比较
			for(int j=i+1; j<arr.length;j++) {
				// 如果我比你大,那么我和你交换位置 
				if(arr[i] < arr[j]) {
					// 值交换
					temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}
		}
		
		for(int i:arr) {
			System.out.print(i+"  ,  ");
		}
		
		
	}

}







package com.WPF.arrayJava;

public class TestArray5 {

	public static void main(String[] args) {
		// 从数组里面找值; 打印出索引
		int[] arr = {2,3,4,5,6,7,8,9,10,102,105,};
		int num = 9;
		/*for(int i=0; i<arr.length; i++) {
			count++;
			if(num == arr[i]) {
				System.out.println("要找的值的位置是:"+i);
				break;
			}
		}*/
		
		// 二分法查找  
		int begin = 0; 			 // 开始的位置
		int last = arr.length-1; // 最后的位置
		int index = -1;          // 默认-1 没有找到
		int count = 0;			 // 找的次数
		int middle; // 定义一个中间数
		
		while(last >= begin) {
			count++;
			// 确定中间的位置
			middle = (begin+last)/2;
			// 如果正好是中间的数相等
			if(num == arr[middle]) {
				index = middle;
				break;
			// 否则如果,要找的数大于中间数
			}else if(num > arr[middle]) {
				begin = middle+1;
			// 否则如果,要找的数小于中间数
			}else if(num < arr[middle]) {
				last = middle-1;
			}
		}
		System.out.println("找了 "+count+" 次: 位置是:"+index);
	}

}
package com.WPF.arrayJava;

public class TestBuffer {

	public static void main(String[] args) {
		//   是String 的增强版; 是可变的字符串序列 ;
		StringBuffer strbuf1 = new StringBuffer("hello");
		StringBuffer strbuf2 = strbuf1;

		strbuf2.append(",java");

		System.out.println(strbuf2 == strbuf1);

		System.out.println("------------------------------------");
		
		StringBuilder str1 = new StringBuilder("java");
		StringBuilder str2 = str1;

		str2.append("!!!!!");

		System.out.println(str1 == str2);

	}

}
package com.WPF.arrayJava;

import java.util.Scanner;

public class TestMethod {
// 方法的重载
	
// 访问权限	返回值申明     方法名(){...}
	public void oneToTen() {
		for(int i=1; i<=10; i++) {
			System.out.println(i);
		}
	}
//                      参数:形参(方法定义时写的参数,要写参数的类型)	
	public void oneToTen(int num) {
		for(int i=1; i<= num ; i++) {
			System.out.println(i);
		}
	}
	
	public void oneToTen(int x, int y) {
		for(int i=x; i<= y ; i++) {
			System.out.println(i);
		}
	}
	
	public static void main(String[] args) {
		// 方法: 就是能实现某种功能的代码集 
		//Scanner input = new Scanner(System.in);
		//String str = input.next();
		
		// ---------------------------------
		// 方法的调用: 用方法所在类的对象来调用
		TestMethod t = new TestMethod();
		
		// 使用方法时提供的参数: 实参: 不用写类型,只能提供相应的类型即可
		t.oneToTen(2,20);
		
		

	}

}
package com.WPF.arrayJava;

public class TestPackage {

	public static void main(String[] args) {
		// 包装类,是对基本数据类型的封装;
		// 包装类: 是基本数据类型面向对象的表现形式;
		/*
		 *		byte      --->    Byte
		 *		short     --->    Short 
		 *		int       --->    Integer 
		 *		long      --->    Long 
		 *		float     --->    Float 
		 *		double    --->    Double 
		 *		boolean   --->    Boolean 
		 * 		char      --->    Character
		 * 
		 * 
		 * */
		byte a = 100;
		Byte a1 = new Byte(a);
	
		
		int b = 200;
		
		String num = "12345";
		int c = Integer.parseInt(num); // 包装类里面的方法
		System.out.println(c+"---------------");
		
		System.out.println(c-10000);
		
		System.out.println(Byte.MAX_VALUE);
		System.out.println(Byte.MIN_VALUE);
		
		
		System.out.println(Integer.MAX_VALUE);
		System.out.println(Integer.MIN_VALUE);

	}

}
package com.WPF.arrayJava;

public class TestString {

	public static void main(String[] args) {
		// java里的数据类型: 
		//1:基本数据类型(八大)     
		//2:引用数据类型(数组类型, 接口, 自定义类...)
		int a = 0;
		float b = 0.0f;
		boolean f = false;
		char c = '\u0000';
		
		// 字符串(最大特性: 不可变 )  ; 用双引号引起来的一串字符   
		String str = "hello";  // null 代表没有引用
		String str3 = "hello";
		
		String str2 = new String("hello");
		String str4 = new String("hello");
		
//		System.out.println(str == str2);  // == 在引用数据类型进行判断的时候,比的是内存地址
//		System.out.println(str == str3);
//		System.out.println(str2 == str4);
//		// 比较字符串的值用equals()方法
//		System.out.println(str.equals(str4));
		
		str3 = str3+",java";
		System.out.println(str3);
		System.out.println(str);

	}

}
package com.WPF.arrayJava;

public class TestString2 {

	public static void main(String[] args) {
		String str = "hello,java";
		//String newStr = str.concat("---------");
		//str = str+"------"; // + 号除了是运算符,也可以是连接符; 字符吕与任何数相加,都把它变成字符串
		//boolean b = true;
		//str = str+b;
		//char c = str.charAt(0); // 返回指定索引处的 char 值
		//System.out.println(str.endsWith("xe")); // 返回的是boolean
		
//		int i = str.indexOf("a");
	/*	int i = str.lastIndexOf("a");
		System.out.println(i);
		System.out.println(str.isEmpty());
		System.out.println(str.length());
		
		String newStr = str.replace('a', 'x');
		System.out.println(newStr);
		
		String[] arr = str.split(",");
		for (String s : arr) {
			System.out.print(s+"      ");
		}
		*/
		
		String newStr = str.substring(6);
		System.out.println(newStr);
		
		String substring = str.substring(4, 7);
		System.out.println(substring);
		
		char[] arr = str.toCharArray();
		for(char c: arr) {
			System.out.print(c+" , ");
		}
		System.out.println("---------------------");
		String str2 = String.valueOf(arr);
		System.out.println(str2);
		
	}

}
package com.WPF.arrayJava;

import java.util.Scanner;

import javax.swing.plaf.synth.SynthScrollBarUI;

public class TestString3 {

	public static void main(String[] args) {
		/*String str = "hello";
		String str2 = new String("hello");
		
		char[] arr = {'j','a','v','a'};
		
		String str3 = new String(arr);
		System.out.println(str3);
		
		String str4 = String.valueOf(arr);
		System.out.println(str4);
		*/
		/*
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一句话");
		String str = input.next();
		System.out.println("你输入的是:"+str+";  长度是:"+str.length());
		*/
		
		/*String name = "小明";
		String password = "xiaoming";
		Scanner input = new Scanner(System.in);
		*/
		
		/*while(true) {
			System.out.println("欢迎使用XX系统");
			System.out.println("1: 登录     2: 退出");
			String op = input.next();
			
			if("1".equals(op)) {
				System.out.println("请输入用户名:");
				String userName = input.next();
				System.out.println("请输入密码");
				String userPass = input.next();
				if(userName.equals(name) && userPass.equals(password)) {
					System.out.println("---登录成功---");
				}else {
					System.out.println("--用户名或密码错误--");
				}
				
			}else if("2".equals(op)) {
				break;
			}
		}
		*/
		/*
		String mail = "123123qq.com";
		if(mail.indexOf("@") >0 && mail.indexOf(".")>0) {
			System.out.println("------mail  ok------");
		}else {
			System.out.println("------mail  error------");
		}
		*/
		String str = "    hello,      ";
		str = str.trim();
		str += "小鱼儿和花无缺!";
		
		System.out.println(str.substring(6, 9));
		System.out.println("---end---");
		
	}

}












上一篇:打印三角形


下一篇:Day2:Dos命令快捷键