文章目录

  • 一、数组
  • 1.初识数组
  • 2.数组的创建
  • 3.数组的元素
  • 4.数组变量
  • 5.投票统计
  • 6. 遍历数组
  • 7. 素数
  • 8. 二维数组
  • 二、字符与字符串
  • 1. 字符类型
  • 2. 逃逸字符
  • 3. 包裹类型
  • 4. 字符串变量
  • 5. 字符串操作
  • 三、函数
  • 1. Math类
  • 2. 函数的定义
  • 3. 函数的参数
  • 4. 函数调用
  • 5. 函数内的变量
  • 总结
  • 1. 数组
  • 2. 字符与字符串
  • 3. 函数



一、数组

1.初识数组

  • 引入
  • 如果需要运行不被记录的每一个数,那么这种方法就存在问题
  • 于有数组可以解决这种问题

2.数组的创建

  1. 数组的含义

java 字符串二维数组定义 java创建字符串二维数组_数据结构


  1. 定义数组变量

  1. 理解一个数组

  1. 数组的创建方法
  • 除了通过定义数组的方法外,还可以通过直接初始化数组的方法来创建一个数组

java 字符串二维数组定义 java创建字符串二维数组_数组_02


3.数组的元素

  1. 数组的元素

java 字符串二维数组定义 java创建字符串二维数组_数组_03


  1. 数组的有效下标

  1. 数组的长度

4.数组变量

  1. 数组变量赋值
  • 发现数组变量之间赋值后,一者数据改变,另一组数据也同样改变
  • 原因:

  1. 数组变量的特性
  2. java 字符串二维数组定义 java创建字符串二维数组_数组_04



  1. 复制数组
  • 复制数组要依次循环遍历
  • java 字符串二维数组定义 java创建字符串二维数组_数组_05



5.投票统计

java 字符串二维数组定义 java创建字符串二维数组_java_06

Scanner in = new Scanner(System.in);
		
		int[] number = new int[10];//下标为0~9       			 //1、创建数组
		 int x = in.nextInt();
		 while(x != -1)
		 {
			 if(x >= 0 && x <=9)
			 {
				 number[x]++;//java数组默认全部初始化为0			//2、数组参与运算
			 }
			 x = in.nextInt();
		 }
		 for(int i = 0; i < number.length; i++) 				//3、遍历数组输出
		 {
			 System.out.println(i + "出现了" + number[i] + "次");
		 }

6. 遍历数组

  1. 例题
  2. java 字符串二维数组定义 java创建字符串二维数组_数据结构_07


  • 用遍历数组解决问题:
  • Scanner in = new Scanner(System.in);
    		//线性搜索
    		int[] data = {3, 2, 5, 7, 4, 9, 11, 34, 12, 28};
    		int x = in.nextInt();//需要搜索的数据
    		int loc = -1;//下标。没有搜索成功,下标就为-1,无效
    		for(int i = 0; i < data.length; i++)//遍历搜索
    		{
    			if(x == data[i])
    			{
    				loc = i;
    				break;
    			}
    		}
    		if(loc > -1)
    			System.out.println(x + "是第" + (loc + 1) + "个");
    		else
    			System.out.println(x + "不在其中");

  1. 遍历数组

java 字符串二维数组定义 java创建字符串二维数组_java_08


3, for-each循环

java 字符串二维数组定义 java创建字符串二维数组_数据结构_09

  • 用for-each解决搜索问题:

    Scanner in = new Scanner(System.in);
    		//不需要显示下标前提下,更有效率的方法
    		int[] data = {3, 2, 5, 7, 4, 9, 11, 34, 12, 28};
    		int x = in.nextInt();//需要搜索的数据
    		int loc = -1;//下标。没有搜索成功,下标就为-1,无效
    		boolean found = false;
    		for(int k : data)//for-each循环  【不能修改数组】
    		{				//for-each 表示为data中的每一个元素作为k值来遍历
    			if(k == x)
    			{
    				found = true;
    				break;
    			}
    		}
    		if(found)
    			System.out.println("找到了!");
    		else
    			System.out.println("没有找到!");

7. 素数

  • 前面所学的求素数程序需要循环n编,效率低下

  • 新方法按效率从低到高排序:

  • 方法一:
  • java 字符串二维数组定义 java创建字符串二维数组_数组_10

  • 方法二:
  • java 字符串二维数组定义 java创建字符串二维数组_数据结构_11

  • 方法三:
  • java 字符串二维数组定义 java创建字符串二维数组_数组_12

    Scanner in = new Scanner(System.in);
    		
    		int[] primes = new int[50];//存放已经发现的素数
    		primes[0] = 2;
    		int cnt = 1;//1.下一个发现的素数要放到primes[cnt]中; 
    					//2.有cnt个素数在primes数组里面
    		MAIN_LOOP:
    		for(int x = 3; cnt < 50; x++)
    		{
    			for(int i = 0; i < cnt; i++)
    			{
    				if(x % primes[i] == 0)
    				{
    					continue MAIN_LOOP;//x不是素数,跳过
    				}
    			}
    			primes[cnt++] = x;//x为素数,计入primes
    		}
    		for(int k : primes)
    		{
    			System.out.print(k + " ");
    		}
  • 方法四:构造素数表
    计算机思维:
  • java 字符串二维数组定义 java创建字符串二维数组_java_13

-代码如下:

java 字符串二维数组定义 java创建字符串二维数组_数据结构_14

Scanner in = new Scanner(System.in);
		
		boolean[] isPrime = new boolean[100];//java默认初始化为0/false
		for(int i = 0; i < isPrime.length; i++)//数组isPrime全部初始化为true
		{
			isPrime[i] = true;
		}
		for(int i = 2; i < isPrime.length; i++)
		{
			if(isPrime[i])
			{
				for(int k = 2; i * k < isPrime.length; k++)//将i的k倍全部赋值为false
				{
					isPrime[i*k] = false;
				}
			}
		}
		for(int i = 2; i < isPrime.length; i++)//遍历输出素数
		{
			if(isPrime[i])
				System.out.print(i + " ");
		}

8. 二维数组

  1. 二维数组的定义
  2. java 字符串二维数组定义 java创建字符串二维数组_数组_15



  1. 二维数组的遍历

java 字符串二维数组定义 java创建字符串二维数组_算法_16


  1. . 二维数组的初始化(同一位数组)
  • 用定义:int[][] a = new int [b][c]来初始化,二维数组里的所有数默认为0
  • 直接初始化二维数组

java 字符串二维数组定义 java创建字符串二维数组_数据结构_17



二、字符与字符串

1. 字符类型

  1. 含义
  2. java 字符串二维数组定义 java创建字符串二维数组_java_18



  1. 字符计算
  2. java 字符串二维数组定义 java创建字符串二维数组_java_19



  1. 字母大小写转换
  2. java 字符串二维数组定义 java创建字符串二维数组_数据结构_20


char c = 'b' - 'a' + 'A';
		char C = 'B' - 'A' + 'a';
		System.out.println("大写为" + c + ";" + "小写为" + C);
  • 我的理解:
    小写转换成大写:先减去a获得与a的距离,再加上A变成大写
    大写转换成小写:先减去A获得与A的距离,再加上a变成小写

  1. 字符可以比较大小
  2. java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_21



2. 逃逸字符

  1. 定义
  2. java 字符串二维数组定义 java创建字符串二维数组_java_22



  1. 逃逸字符

java 字符串二维数组定义 java创建字符串二维数组_数组_23

  • \t :
  • java 字符串二维数组定义 java创建字符串二维数组_数组_24



3. 包裹类型

  1. 与基础类型对应的包裹类型
  2. java 字符串二维数组定义 java创建字符串二维数组_数据结构_25



  1. 包裹类型的用处

java 字符串二维数组定义 java创建字符串二维数组_java_26



java 字符串二维数组定义 java创建字符串二维数组_算法_27


  1. . 运算符

java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_28


4. 字符串变量

  1. 定义
  2. java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_29



  1. 字符串变量
  2. java 字符串二维数组定义 java创建字符串二维数组_数组_30



  1. 字符串的创建
  • new:
  • java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_31

  • 直接初始化:
  • java 字符串二维数组定义 java创建字符串二维数组_数据结构_32


  1. 字符串的拼接
  2. java 字符串二维数组定义 java创建字符串二维数组_数据结构_33



  1. 输入字符串
  2. java 字符串二维数组定义 java创建字符串二维数组_数据结构_34



  1. 字符串赋值与基础类型赋值

java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_35

  • 字符串是对象的管理者,与数组一致,两变量之间赋值后,一者的值改变,令一者也改变
  • 基础类型是对象的拥有者,两变量之间赋值后,一者的值改变,令一者不改变

  1. 比较两个字符串
  2. java 字符串二维数组定义 java创建字符串二维数组_算法_36


  • ”==“符号比较两者的地址
  • equals()比较两者的内容

java 字符串二维数组定义 java创建字符串二维数组_算法_37


5. 字符串操作

java 字符串二维数组定义 java创建字符串二维数组_数据结构_38

  1. compareTo() 比较大小
  2. java 字符串二维数组定义 java创建字符串二维数组_数据结构_39



  1. length() 获取长度
  2. java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_40



  1. charAt() 访问字符
  2. java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_41



  1. subString() 得到子串
  2. java 字符串二维数组定义 java创建字符串二维数组_数据结构_42



  1. indexOf() 寻找字符
  2. java 字符串二维数组定义 java创建字符串二维数组_数据结构_43



  1. 字符不可变
  2. java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_44



  1. 其他字符串操作
  2. java 字符串二维数组定义 java创建字符串二维数组_java_45



  1. switch-case中的字符串
  2. java 字符串二维数组定义 java创建字符串二维数组_数据结构_46




三、函数

java 字符串二维数组定义 java创建字符串二维数组_算法_47

  • 调试函数时,需要点击Step Into才能进入函数去调试程序
  • 否则Step Over会跳过函数,直接返回结果
  • 图中按钮的右边第二个是Step Return, 可以在调试函数时跳出函数

1. Math类

java 字符串二维数组定义 java创建字符串二维数组_数据结构_48

2. 函数的定义

  1. 以前学习的函数
  2. java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_49


  • 这些函数都是java自带的函数

  1. 函数的定义
  2. java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_50

  3. 素数求和
  4. java 字符串二维数组定义 java创建字符串二维数组_算法_51


  1. 求和

java 字符串二维数组定义 java创建字符串二维数组_java_52

  • 求和函数的解析:
  • java 字符串二维数组定义 java创建字符串二维数组_数据结构_53



3. 函数的参数

  1. 传参

java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_54


  1. 传递的参数类型不匹配

java 字符串二维数组定义 java创建字符串二维数组_数据结构_55


  1. 参数和值

java 字符串二维数组定义 java创建字符串二维数组_java_56


4. 函数调用

  1. 调用函数

java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_57


  1. 函数返回
  2. java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_58



  1. 函数的返回值
  • 有返回值的函数:
  • java 字符串二维数组定义 java创建字符串二维数组_算法_59

  • 没有返回值的函数:
  • java 字符串二维数组定义 java创建字符串二维数组_数据结构_60


5. 函数内的变量

  1. 定义
  2. java 字符串二维数组定义 java创建字符串二维数组_算法_61



  1. 变量的生存期和作用域

java 字符串二维数组定义 java创建字符串二维数组_数组_62


  1. 本地变量的规则

java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_63



总结

1. 数组

  1. 数组的创建
  2. java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_64



  1. 数组的元素
  2. java 字符串二维数组定义 java创建字符串二维数组_数据结构_65



  1. 数组变量

java 字符串二维数组定义 java创建字符串二维数组_数据结构_66


  1. 遍历数组
  2. java 字符串二维数组定义 java创建字符串二维数组_java_67



  1. 二维数组

java 字符串二维数组定义 java创建字符串二维数组_数组_68


2. 字符与字符串

  1. 字符类型

java 字符串二维数组定义 java创建字符串二维数组_数据结构_69


  1. 逃逸字符

java 字符串二维数组定义 java创建字符串二维数组_算法_70


  1. 包裹类型
  2. java 字符串二维数组定义 java创建字符串二维数组_数组_71



  1. 字符串变量

java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_72


java 字符串二维数组定义 java创建字符串二维数组_java_73


  1. 字符串操作
  2. java 字符串二维数组定义 java创建字符串二维数组_数据结构_74


  3. java 字符串二维数组定义 java创建字符串二维数组_算法_75



3. 函数

  1. Math类
  2. java 字符串二维数组定义 java创建字符串二维数组_java_76



  1. 函数的定义
  2. java 字符串二维数组定义 java创建字符串二维数组_算法_77



  1. 函数的参数

java 字符串二维数组定义 java创建字符串二维数组_数组_78


  1. 函数调用

java 字符串二维数组定义 java创建字符串二维数组_java_79


  1. 函数内的变量-本地变量

java 字符串二维数组定义 java创建字符串二维数组_java 字符串二维数组定义_80