哪个网站做宣传比较好,服务 信誉好的网站制作,夜间正能量不良网站入口不用下载,茂港手机网站建设公司1.API
1.1API概述 什么是API API (Application Programming Interface) #xff1a;应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类#xff0c;这些类将底层的实现封装了起来#xff0c;我们不需要关心这些类是如何实现的#xff0c;只需要…1.API
1.1API概述 什么是API API (Application Programming Interface) 应用程序编程接口 java中的API 指的就是 JDK 中提供的各种功能的 Java类这些类将底层的实现封装了起来我们不需要关心这些类是如何实现的只需要学习这些类如何使用即可我们可以通过帮助文档来学习这些API如何使用。
1.2如何使用API帮助文档
打开帮助文档 找到索引选项卡中的输入框 在输入框中输入Random 看类在哪个包下 看类的描述 看构造方法 看成员方法 2.String类
2.1String类概述
String 类代表字符串Java 程序中的所有字符串文字例如“abc”都被实现为此类的实例。也就是说Java 程序中所有的双引号字符串都是 String 类的对象。String 类在 java.lang 包下所以使用的时候不需要导包
2.2String类的特点
字符串不可变它们的值在创建后不能被更改虽然 String 的值是不可变的但是它们可以被共享字符串效果上相当于字符数组( char[] )但是底层原理是字节数组( byte[] )
2.3String类的构造方法
常用的构造方法
方法名说明public String()创建一个空白字符串对象不含有任何内容public String(char[] chs)根据字符数组的内容来创建字符串对象public String(byte[] bys)根据字节数组的内容来创建字符串对象String s “abc”;直接赋值的方式创建字符串对象内容就是abc
示例代码
public class _01_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);}
}2.4 创建字符串对象两种方式的区别 通过构造方法创建 通过 new 创建的字符串对象每一次 new 都会申请一个内存空间虽然内容相同但是地址值不同 直接赋值方式创建 以“”方式给出的字符串只要字符序列相同(顺序和大小写)无论在程序代码中出现几次JVM 都只会建立一个 String 对象并在字符串池中维护
2.5 字符串的比较
2.5.1号的作用
比较基本数据类型比较的是具体的值比较引用数据类型比较的是对象地址值
2.5.2equals方法的作用
方法介绍
public boolean equals(String s) 比较两个字符串内容是否相同、区分大小写示例代码
public class _02_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.6 用户登录案例
2.6.1 案例需求
已知用户名和密码请用程序实现模拟用户登录。总共给三次机会登录之后给出相应的提示
2.6.2 代码实现
public class _03_LoginDemo {public static void main(String[] args) {//1.定义两个变量用来记录正确的用户名和密码String rightUsername zhangsan;String rightPassword 123456;//2.键盘录入用户名和密码//ctrl alt T 选择包裹方式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}}}}
}
2.7 遍历字符串案例
2.7.1案例需求
键盘录入一个字符串使用程序实现在控制台遍历该字符串
2.7.2直接遍历字符串
package com.iflytek.day12;import java.util.Scanner;public class _04_StringForeach {public static void main(String[] args) {//两个方法//charAt()会根据索引获取对应的字符//length(): 会返回字符串的长度//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//根据索引获取字符串里面的每一个字符//ctrl alt V 自动生成左边的接受变量char c str.charAt(i);System.out.println(c);}}
}
2.8 统计字符次数案例
2.8.1 案例需求
键盘录入一个字符串统计该字符串中大写字母字符小写字母字符数字字符出现的次数(不考虑其他字符)
2.8.2 代码实现
package com.iflytek.day12;import java.util.Scanner;public class _05_StringCount {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 个);}
}
2.9 字符串拼接案例
2.9.1 案例需求
定义一个方法把 int 数组中的数据按照指定的格式拼接成一个字符串返回调用该方法
并在控制台输出结果。例如数组为 int[] arr {1,2,3}; 执行方法后的输出结果为[1, 2, 3]
2.9.2 代码实现
package com.iflytek.day12;public class _06_StringConcat {public static void main(String[] args) {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;}}
2.10 字符串反转案例
2.10.1案例需求
定义一个方法实现字符串反转。键盘录入一个字符串调用该方法后在控制台输出结果
例如键盘录入 abc输出结果 cba
2.10.2代码实现
package com.iflytek.day12;import java.util.Scanner;public class _07_StringReverse {public static void main(String[] args) {/*定义一个方法实现字符串反转。键盘录入一个字符串调用该方法后在控制台输出结果例如键盘录入 abc输出结果 cba*///1.定义一个字符串Scanner sc new Scanner(System.in);System.out.println(请输入一个字符串);String str sc.next();//2.定义一个方法反转字符串//abc --- cba//可以把字符串倒着遍历再拼接String result reverse(str);System.out.println(result);}//注释方法的作用就是反转字符串//把传递进来的字符串进行反转public static String reverse(String str){//abc//核心思想倒着遍历并进行拼接就可以了//fori :正着遍历 forr倒着遍历String s ;for (int i str.length() - 1; i 0; i--) {//i 依次表示字符串里面的每一个索引倒着的//我们就可以拿到里面的每一个字符并拼接s s str.charAt(i);}//把倒着拼接之后的结果返回即可return s;}
}
2.11 金额转换
2.11.1 案例需求
把2135变成零佰零拾零万贰仟壹佰叁拾伍元
把789变成零佰零拾零万零仟柒佰捌拾玖元
2.11.2 代码实现
package com.iflytek.day12;import java.util.Scanner;public class _08_MoneyToUpper {public static void main(String[] args) {//1.键盘录入一个金额Scanner sc new Scanner(System.in);int money;while (true) {System.out.println(请录入一个金额);money sc.nextInt();if (money 0 money 9999999) {break;} else {System.out.println(金额无效);}}//定义一个变量用来表示钱的大写String moneyStr ;//2.得到money里面的每一位数字,再转成中文while (true) {//2135//从右往左获取数据因为右侧是数据的个位int ge money % 10;String capitalNumber getCapitalNumber(ge);//把转换之后的大写拼接到moneyStr当中moneyStr capitalNumber moneyStr;//第一次循环 伍 伍//第二次循环 叁 伍 叁伍//去掉刚刚获取的数据money money / 10;//如果数字上的每一位全部获取到了那么money记录的就是0此时循环结束if (money 0) {break;}}//3.在前面补0补齐7位int count 7 - moneyStr.length();for (int i 0; i count; i) {moneyStr 零 moneyStr;}System.out.println(moneyStr);//零零零贰壹叁伍//4.插入单位//定义一个数组表示单位String[] arr {佰,拾,万,仟,佰,拾,元};// 零 零 零 贰 壹 叁 伍//遍历moneyStr依次得到 零 零 零 贰 壹 叁 伍//然后把arr的单位插入进去String result ;for (int i 0; i moneyStr.length(); i) {char c moneyStr.charAt(i);//把大写数字和单位拼接到result当中result result c arr[i];}//5.打印最终结果System.out.println(result);}//定义一个方法把数字变成大写的中文//1 -- 壹public static String getCapitalNumber(int number) {//定义数组让数字跟大写的中文产生一个对应关系String[] arr {零, 壹, 贰, 叁, 肆, 伍, 陆, 柒, 捌, 玖};//返回结果return arr[number];}}
2.12 手机号屏蔽
需求
以字符串的形式从键盘接受一个手机号将中间四位号码屏蔽
最终效果为131****9468
代码实现
package com.iflytek.day12;import java.util.Scanner;public class _09_MobileEncode {public static void main(String[] args) {/*以字符串的形式从键盘接受一个手机号将中间四位号码屏蔽最终效果为131****9468*///1.键盘录入一个手机号码Scanner sc new Scanner(System.in);System.out.println(请输入手机号码);String phoneNumber sc.next();//13112349408//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);}
}
2.13 敏感词替换
需求1
键盘录入一个 字符串如果字符串中包含TMD则使用***替换
示例代码
package com.iflytek.day12;public class _10_SensitiveReplace {public static void main(String[] args) {//1.定义一个变量表示骂人的话String talk 后裔你玩什么啊TMD;//2.把这句话中的敏感词进行替换String result talk.replace(TMD, ***);//3.打印System.out.println(talk);System.out.println(result);}
}
需求2
如果要替换的敏感词比较多怎么办
示例代码
package com.iflytek.day12;import java.util.Scanner;public class _11_SensitiveReplace {public static void main(String[] args) {//实际开发中敏感词会有很多很多//1.先键盘录入要说的话Scanner sc new Scanner(System.in);System.out.println(请输入要说的话);String talk sc.next();//后裔你玩什么啊TMD,GDX,ctmd,ZZ//2.定义一个数组用来存多个敏感词String[] arr {TMD,GDX,ctmd,ZZ,lj,FW,nt};//3.把说的话中所有的敏感词都替换为***for (int i 0; i arr.length; i) {//i 索引//arr[i] 元素 --- 敏感词talk talk.replace(arr[i],***);}//4.打印结果System.out.println(talk);//后裔你玩什么啊***,***,***,***}
}
2.14 身份证信息查看
需求
身份证号的每一位都是有固定的含义
1、2位省份3、4位城市5、6位区县7-14位出生年、月、日15、16位所在地派出所17位性别奇数男性偶数女性18位个人信息码随机产生
要求打印内容方式如下
人物信息为
出生年月日XXXX年X月X日
性别为男/女
示例代码
package com.iflytek.day12;public class _12_IdCard {public static void main(String[] args) {//1.定义一个字符串记录身份证号码String id 321281202001011234;//2.获取出生年月日String year id.substring(6, 10);String month id.substring(10, 12);String day id.substring(12, 14);System.out.println(人物信息为);System.out.println(出生年月日: year 年 month 月 day 日);//3.获取性别char gender id.charAt(16);//3 --- 3//利用ASCII码表进行转换//0 --- 48//1 --- 49//2 --- 50//3 --- 51//4 --- 52//5 --- 53//6 --- 54//7 --- 55//8 --- 56//9 --- 57int num gender - 48;if(num % 2 0){System.out.println(性别为:女);}else{System.out.println(性别为:男);}}
}3.StringBuilder
StringBuilder 可以看成是一个容器创建之后里面的内容是可变的。
当我们在拼接字符串和反转字符串的时候会使用到
3.1 基本使用
package com.iflytek.day12;public class _13_StringBuilderDemo {public static void main(String[] args) {//1.创建对象StringBuilder sb new StringBuilder(abc);//2.添加元素/*sb.append(1);sb.append(2.3);sb.append(true);*///反转sb.reverse();//获取长度int len sb.length();System.out.println(len);//打印//普及//因为StringBuilder是Java已经写好的类//java在底层对他做了一些特殊处理。//打印对象不是地址值而是属性值。System.out.println(sb);}
}3.2 链式编程
package com.iflytek.day12;public class _14_StringBuilderDemo {public static void main(String[] args) {//1.创建对象StringBuilder sb new StringBuilder();//2.添加字符串sb.append(aaa).append(bbb).append(ccc).append(ddd);System.out.println(sb);//aaabbbcccddd//3.再把StringBuilder变回字符串String str sb.toString();System.out.println(str);//aaabbbcccddd}
}3.3 练习1对称字符串
需求
键盘接收一个字符串程序判断出该字符串是否是对称字符串并在控制台打印是或不是
对称字符串123321、111非对称字符串123123代码示例
package com.iflytek.day12;import java.util.Scanner;public class _15_SymmetricString {//使用StringBuilder的场景//1.字符串的拼接//2.字符串的反转public static void main(String[] args) {//1.键盘录入一个字符串Scanner sc new Scanner(System.in);System.out.println(请输入一个字符串);String str sc.next();//2.反转键盘录入的字符串String result new StringBuilder().append(str).reverse().toString();//3.比较if(str.equals(result)){System.out.println(当前字符串是对称字符串);}else{System.out.println(当前字符串不是对称字符串);}}
}
3.4 练习2拼接字符串
需求
定义一个方法把 int 数组中的数据按照指定的格式拼接成一个字符串返回。
调用该方法并在控制台输出结果。
例如数组为int[] arr {1,2,3};
执行方法后的输出结果为[1, 2, 3]
代码示例:
package com.iflytek.day12;public class _16_ConcatString {public static void main(String[] args) {//1.定义数组int[] arr {1,2,3};//2.调用方法把数组变成字符串String str arrToString(arr);System.out.println(str);}public static String arrToString(int[] arr){StringBuilder sb new StringBuilder();sb.append([);for (int i 0; i arr.length; i) {if(i arr.length - 1){sb.append(arr[i]);}else{sb.append(arr[i]).append(, );}}sb.append(]);return sb.toString();}
}关于字符串的小扩展 字符串存储的内存原理 String s “abc”直接赋值 特点 此时字符串abc是存在字符串常量池中的。 先检查字符串常量池中有没有字符串abc如果有不会创建新的而是直接复用。如果没有abc才会创建一个新的。 所以直接赋值的方式代码简单而且节约内存。 new出来的字符串 看到new关键字一定是在堆里面开辟了一个小空间。 String s1 new String“abc” String s2 “abc” s1记录的是new出来的在堆里面的地址值。 s2是直接赋值的所以记录的是字符串常量池中的地址值。 号比较的到底是什么 如果比较的是基本数据类型比的是具体的数值是否相等。 如果比较的是引用数据类型比的是地址值是否相等。 结论只能用于比较基本数据类型。不能比较引用数据类型。