欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > java基础语法整理 -----下

java基础语法整理 -----下

2024/10/24 6:28:13 来源:https://blog.csdn.net/weixin_44702984/article/details/139688025  浏览:    关键词:java基础语法整理 -----下

java基础语法整理

  • 一、数组
  • 二、面向对象
  • 三、字符串
    • 1.String常见成员方法
    • 2.使用小案例
      • 用户登录案例
      • 遍历字符串案例
      • 统计字符次数案例
      • 字符串拼接案例
      • 手机号屏蔽
  • 四、集合

链接: java基础语法整理 -----上

一、数组

1.从概念谈起

  1. 概念:指的是一种容器,可以同来存储同种数据类型的多个值。但是数组容器在存储数据的时候,需要结合隐式转换考虑。
  2. 比如
    • 定义了一个int类型的数组。那么boolean。double类型的数据是不能存到这个数组中的,
    • 但是byte类型,short类型,int类型的数据是可以存到这个数组里面的。
  3. 建议:容器的类和存储的数据类型保持一致。
  4. 举例:
    • 整数1 2 3 4 56 就可以使用int类型的数组来存储。
    • 小数1.1 1.2 1.3 1.4 就可以使用double类型的数组来存储。
    • 字符串"aaa" “bbb” “ccc” 就可以使用String类型的数组来存储。

2.数组的静态初始化

  1. 完整格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,元素4…};
    int[] arr = new int[]{11,22,33};double[] arr = new double[]{1.1,1.2,1.3};
    
  2. 格式详解
    • 数据类型: 限定了数组以后能存什么类型的数据
    • 方括号:表示现在定义的是一个数组
    • 数组名:其实就是名字而已,方便以后使用,在起名字的时候遵循小驼峰命名法
    • new:就是给数组在内存中开辟了一个空间
    • 数据类型:限定了数组以后能存什么类型的数据。前面和后面的数据类型一定要保持一致。
    • 方括号:表示现在定义的是一个数组。
    • 大括号:表示数组里面的元素。元素也就是存入到数组中的数据。多个元素之间,一定要用逗号隔开。
  3. 错误写法
int[] arr = new double[]{11,22,33};
  1. 注意点:
    • 等号前后的数据类型必须保持一致
    • 数组一旦创建之后,长度不能发生变化
  2. 简化格式:数据类型[] 数组名 = {元素1,元素2,元素3,元素4…};

3。地址值

int[] arr = {1,2,3,4,5};
System.out.println(arr);//[I@6d03e736double[] arr2 = {1.1,2.2,3.3};
System.out.println(arr2);//[D@568db2f2
  • 打印数组的时候,实际出现的是数组的地址值
  • 数组的地址值:就表示数组在内存中的位置
  • 以[I@6d03e736为例:
    • [ :表示现在打印的是一个数组。
    • I:表示现在打印的数组是int类型的。
    • @:仅仅是一个间隔符号而已。
    • 6d03e736:就是数组在内存中真正的地址值。(十六进制的)

4.数组元素的访问

  1. 格式:数组名[索引];
  2. 作用
    • 获取数组中对应索引上的值
    • 修改数组中对应索引上的值
  3. 代码示例
public class ArrDemo {/*数组中元素访问的格式:数组名[索引];作用:1.获取指定索引上对应的元素2.修改指定索引上对应的元素*/public static void main(String[] args) {int[] arr = {1,2,3,4,5};// 需求:获取arr数组中,3索引上的值int number = arr[3];System.out.println(number);System.out.println(arr[3]);// 需求:将arr数组中,3索引上的值修改为10arr[3] = 10;System.out.println("修改之后为:" + arr[3]);}
}

5.索引

  1. 索引也叫角标、下标。就是数组容器中每一个小格子对应的编号。
  2. 索引的特点
    • 索引一定是从0开始的
    • 连续不间断
    • 逐个+1增长

6.数组的遍历

  • 遍历:就是把数组里面所有的内容一个一个全部取出来。
  • 数组的长度:数组名.length;
  • 通用代码
    for(int i = 0; i < arr.length; i++){// 在循环的过程中,i依次表示数组中的每一个索引sout(arr[i]); // 就可以把数组里面的每一个元素都获取出来,并打印在控制台上了。
    }
    

7.数组的动态初始化

  1. 格式:数据类型[] 数组名 = new 数据类型[数组的长度];
  2. 举例
    // 1.定义一个数组,存3个人的年龄,年龄未知
    int[] agesArr = new int[3];// 2 .定义一个数组,存班级10名学生的考试成绩,考试成绩暂时未知,考完才知道。
    int[] scoresArr = new int[10];
    
  3. 数组的默认初始化值:
    • 整数类型:0
    • 小数类型:0.0
    • 布尔类型:false
    • 字符类型:‘\u0000’
    • 引用类型:null

8.数组两种初始化方式的区别

  • 静态初始化:int[] arr = {1,2,3,4,5};

  • 动态初始化:int[] arr = new int[3];

  • 静态初始化:手动指定数组的元素,系统会根据元素的个数,计算出数组的长度。

  • 动态初始化:手动指定数组长度,由系统给出默认初始化值。

  1. 使用场景
    • 只明确元素个数,但是不明确具体的数据,推荐使用动态初始化。
    • 已经明确了要操作的所有数据,推荐使用静态初始化。
  2. 举例
  • 使用数组来存储键盘录入的5个整数。

    nt[] arr = new int[5];
    
  • 将全班的学生成绩存入数组中,已知学生成绩为:66,77,88,99,100

    int[] arr = new int[5];arr[0] = 66;arr[1] = 77;... 虽然可以实现,但是太麻烦了。建议使用静态初始化:int[] arr = {66,77,88,99,100};
    

9.数组常见问题

  • 当访问了数组中不存在的索引,就会引发索引越界异常。
  • 避免:
    ​ + 针对于任意一个数组,索引的范围:
    • 最小索引:0
    • 最大索引:数组的长度 - 1,数组名.length - 1
public class ArrDemo6 {public static void main(String[] args) {int[] arr = {1,2,3,4,5,5,5,5,5};//用索引来访问数组中的元素System.out.println(arr[1]);System.out.println(arr[10]);//ArrayIndexOutOfBoundsException}
}

二、面向对象

  1. 什么是面向对象:面向对象是一种设计思想,当我们在代码中想要做一件事情的时候,我们不会自己做,可以想,谁可以干这件事情,谁能干,就让谁去干,我们忽略过程,只注重结果
  • 举例一:当我们想要获取一个随机数,我们不需要自己写随机算法,我们想Java中已经定义好了一个类Random可以做这件事情,那么就让Random去做,我们不关心他是如何写随机算法的,只关注最终结果即可
  • 举例二:当我们想要获取键盘上输入的数字时,我们不需要去写,发现键盘,配对键盘,连接键盘,组合按键,验证数据,监控键盘,扫描键盘,获取数据这些代码,我们想Java中已经定义好了一个类Scanner可以做这件事情,那么就让Scanner去做,我们不关心他是如何跟键盘之间发生关系的,只关注最终的结果即可

  1. 面向对象到底学什么
    • 学习获取已有对象并使用
    • 学习如何自己设计对象并使用

  1. 面向对象中的两个核心思想
      • 类是对现实生活中一类具有共同属性和行为的事物的抽象
      • 简单理解:类就是对现实事物的一种描述
      • 类的组成
        • 属性:指事物的特征,例如:手机事物(品牌,价格,尺寸)
        • 行为:指事物能执行的操作,例如:手机事物(打电话,发短信)
    • 类和对象的关系
      • 类:类是对现实生活中一类具有共同属性和行为的事物的抽象
      • 对象:是能够看得到摸的着的真实存在的实体
      • 简单理解:类是对事物的一种描述,对象则为具体存在的事物

  1. 标准JavaBean类

用来描述一类事物的类叫做Javabean类,带有main方法的类叫做测试类

标准类制作:

  • 类名需要见名知意
  • 成员变量使用private修饰
  • 提供至少两个构造方法
    • 无参构造方法
    • 带全部参数的构造方法
  • get和set方法:提供每一个成员变量对应的setXxx()/getXxx()
  • 如果还有其他行为,也需要写上

三、字符串

  1. String的概述:String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的时候不需要导包!
  2. String类的特点
    • 字符串不可变,它们的值在创建后不能被更改
    • 虽然 String 的值是不可变的,但是它们可以被共享
    • 字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )
  3. 获取字符串对象的方式
    • 构造方法
    • 直接赋值
方法名说明
public String()创建一个空白字符串对象,不含有任何内容
public String(char[] chs)根据字符数组的内容,来创建字符串对象
public String(byte[] bys)根据字节数组的内容,来创建字符串对象
String s = “abc”;直接赋值的方式创建字符串对象,内容就是abc

示例代码:

public class StringDemo {public static void main(String[] args) {// public String():创建一个空白字符串对象,不含有任何内容String s1 = new String();System.out.println("s1:" + s1);// public String(char[] chs):根据字符数组的内容,来创建字符串对象char[] chs = {'a', 'b', 'c'};String s2 = new String(chs);System.out.println("s2:" + s2);// public String(byte[] bys):根据字节数组的内容,来创建字符串对象byte[] bys = {97, 98, 99};String s3 = new String(bys);System.out.println("s3:" + s3);// String s = “abc”;	直接赋值的方式创建字符串对象,内容就是abcString s4 = "abc";System.out.println("s4:" + s4);}
}
  1. 两种方式的区别
    • 通过构造方法创建:通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同
    • 直接赋值方式创建:以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护

1.String常见成员方法

1.字符串的比较

  1. ==号的作用
    • 比较基本数据类型:比较的是具体的值
    • 比较基本数据类型:比较的是具体的值
  2. equals方法的作用
    • 方法介绍
    // 比较两个字符串内容是否相同、区分大小写
    public boolean equals(String s)     
    
    • 示例代码
    public class StringDemo {public static void main(String[] args) {// 构造方法的方式得到对象char[] chs = {'a', 'b', 'c'};String s1 = new String(chs);String s2 = new String(chs);// 直接赋值的方式得到对象String s3 = "abc";String s4 = "abc";// 比较字符串对象地址是否相同System.out.println(s1 == s2);System.out.println(s1 == s3);System.out.println(s3 == s4);System.out.println("--------");// 比较字符串内容是否相同System.out.println(s1.equals(s2));System.out.println(s1.equals(s3));System.out.println(s3.equals(s4));}
    }
    

2.使用小案例

用户登录案例

需求:已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示

public class Test1 {public static void main(String[] args) {// 1.定义两个变量用来记录正确的用户名和密码String rightUsername = "Andy";String rightPassword = "123456";//2.键盘录入用户名和密码for (int i = 0; i < 3; i++) {//0 1 2Scanner sc = new Scanner(System.in);System.out.println("请输入用户名");String username = sc.next();System.out.println("请输入密码");String password = sc.next();// 3.判断比较if (username.equals(rightUsername) && password.equals(rightPassword)) {System.out.println("登录成功");// 如果正确,循环结束break;} else {// 最后一次机会if(i == 2){System.out.println("账户" + username + "被锁定,请联系管理员");}else{// 不是最后一次机会System.out.println("用户名或密码错误,登录失败,还剩下" + (2 - i) + "次机会");//2 1 0}}}}
}

遍历字符串案例

需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串

public class Test2 {public static void main(String[] args) {// 1.键盘录入一个字符串Scanner sc = new Scanner(System.in);System.out.println("请输入字符串");String str = sc.next();System.out.println(str);// 2.遍历for (int i = 0; i < str.length(); i++) {// i 依次表示字符串的每一个索引// 索引的范围:0 ~  长度-1// 根据索引获取字符串里面的每一个字符char c = str.charAt(i);System.out.println(c);}}
}

统计字符次数案例

需求:键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)

public class Test3 {public static void main(String[] args) {// 1.键盘录入一个字符串Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串");String str = sc.next();// 2.统计 --- 计数器count// 此时我要统计的有3样东西,所以要定义3个计数器分别进行统计int bigCount = 0;int smallCount = 0;int numberCount = 0;//得到这个字符串里面每一个字符for (int i = 0; i < str.length(); i++) {// i 表示字符串中的索引// c 表示字符串中的每一个字符char c = str.charAt(i);// 对c进行判断if (c >= 'a' && c <= 'z') {smallCount++;}else if(c >= 'A' && c <= 'Z'){bigCount++;}else if(c >= '0' && c <= '9'){numberCount++;}}// 3.当循环结束之后,三个变量记录的就是对应的个数System.out.println("大写字符有:" + bigCount + "个");System.out.println("小写字符有:" + smallCount + "个");System.out.println("数字字符有:" + numberCount + "个");}
}    

字符串拼接案例

需求:定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。例如,数组为 int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]

public class Test4 {public static void main(String[] args) {// 定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,// 并在控制台输出结果。例如,数组为 int[] arr = {1,2,3};// 执行方法后的输出结果为:[1, 2, 3]int[] arr = {1, 2, 3, 4, 5};String str = arrToString(arr);System.out.println(str);}// 作用:把一个数组变成字符串public static String arrToString(int[] arr) {String s = "";// 拼接左括号s = s + "["; // 拼接内容for (int i = 0; i < arr.length; i++) {if(i == arr.length - 1){// 如果是最后一个元素,那么不需要拼接逗号空格s = s + arr[i];}else{// 如果不是最后一个元素,需要拼接元素和逗号空格s = s + arr[i] + ", ";}}// 等循环结束之后,再拼接最后一个右括号s = s + "]";return s;}// 用来遍历数组public static void printArr(int[] arr) {System.out.print("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {System.out.print(arr[i]);} else {System.out.print(arr[i] + ", ");}}System.out.println("]");}
}

手机号屏蔽

需求:以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽最终效果为:137****8888

public class Test5 {public static void main(String[] args) {// 1.键盘录入一个手机号码Scanner sc = new Scanner(System.in);System.out.println("请输入手机号码");String phoneNumber = sc.next();// 2.截取手机号码中的前三位String star = phoneNumber.substring(0, 3);// 3.截取手机号码中的最后四位// 此时我用substring方法,是用1个参数的,还是两个参数的?1个参数的会更好// 因为现在我要截取到最后,所以建议使用1个参数的。String end = phoneNumber.substring(7);//4.拼接String result = star + "****" + end;System.out.println(result);}
}

四、集合

  1. 集合和数组的优势对比:
    • 长度可变
    • 添加数据的时候不需要考虑索引,默认将数据添加到末尾
  2. ArrayList类概述
    • 什么是集合:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
    • ArrayList集合的特点:长度可以变化,只能存储引用数据类型
    • 泛型的使用:用于约束集合中存储元素的数据类型
  3. ArrayList的常用构造方法
方法名说明
public ArrayList()创建一个空的集合对象
  1. ArrayList的常用成员方法
方法名说明
public boolean add(要添加的元素)将指定的元素追加到此集合的末尾
public boolean remove(要删除的元素)删除指定元素,返回值表示是否删除成功
public E remove(int index)删除指定索引处的元素,返回被删除的元素
public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
public E get(int index)返回指定索引处的元素
public int size()返回集合中的元素的个数
  1. 示例代码
public class ArrayListDemo {public static void main(String[] args) {// 创建集合ArrayList<String> array = new ArrayList<String>();// 添加元素array.add("hello");array.add("world");array.add("java");// public boolean remove(Object o):删除指定的元素,返回删除是否成功//        System.out.println(array.remove("world"));//        System.out.println(array.remove("javaee"));// public E remove(int index):删除指定索引处的元素,返回被删除的元素//        System.out.println(array.remove(1));// IndexOutOfBoundsException//        System.out.println(array.remove(3));// public E set(int index,E element):修改指定索引处的元素,返回被修改的元素//        System.out.println(array.set(1,"javaee"));// IndexOutOfBoundsException//        System.out.println(array.set(3,"javaee"));// public E get(int index):返回指定索引处的元素//        System.out.println(array.get(0));//        System.out.println(array.get(1));//        System.out.println(array.get(2));// System.out.println(array.get(3)); //?????? 自己测试// public int size():返回集合中的元素的个数System.out.println(array.size());// 输出集合System.out.println("array:" + array);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com