当前位置: 首页 > news >正文

网站开发需要哪些知识大型集团网站建设公司

网站开发需要哪些知识,大型集团网站建设公司,自动化网站建设,福州百度seo排名软件Java常用类 文章目录 一、字符串相关的类1.1、String的 不可变性1.2、String不同实例化方式的对比1.3、String不同拼接操作的对比1.4、String的常用方法1.5、String类与其他结构之间的转换1.5.1、String 与基本数据类型、包装类之间的转换1.5.2、String 与char[]的转换1.5.3、…Java常用类 文章目录 一、字符串相关的类1.1、String的 不可变性1.2、String不同实例化方式的对比1.3、String不同拼接操作的对比1.4、String的常用方法1.5、String类与其他结构之间的转换1.5.1、String 与基本数据类型、包装类之间的转换1.5.2、String 与char[]的转换1.5.3、String 与byte[]的转换 1.6、常见算法题目1.6.1、模拟一个trim方法去除字符串两端的空格1.6.2、将一个字符串进行反转1.6.3、获取一个字符串在另一个字符串中出现的次数1.6.4、获取两个字符串中最大相同子串1.6.5、对字符串中字符进行自然顺序排序 二、StringBuffer、StringBuilder2.1、StringBuffer源码分析2.2、StringBuffer和StringBuilder中的常用方法 一、字符串相关的类 1.1、String的 不可变性 String字符串使用一对引起来表示。 字符串在底层是用char型数组存储的 String声明为final的不可被继承 String实现了Serializable接口表示字符串是支持序列化的 ​ 实现了Comparable接口表示String可以比较大小 String内部定义了 final char[] value 用于存储字符串数据 String代表不可变的字符序列。简称不可变性。 体现1. 当对字符串重新赋值时需要重写指定内存区域赋值不能使用原有的value进行赋值 2. 当对现有的字符串进行连接操作时也需要重新指定内存区域赋值不能使用原有的 3. 当调用String的replace()方法修改指定字符或字符串时也需要重新指定内存区域 通过字面量的方式区别于new给一个字符串赋值此时的字符串值声明在字符串常量池中 String s1 abc;//字面量不需要new可以直接赋值字符串常量池中不会存储相同内容的字符串的。 1.2、String不同实例化方式的对比 String实例化方式 方式一通过字面量定义的方式方式二通过new 构造器的方式 面试题String s new String(“abc”); 方式创建对象在内存中创建了几个对象 答两个。一个是堆空间中new结构一个是char[]对应的常量池中的数据“abc” 1.3、String不同拼接操作的对比 常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。只要其中有一个是变量结果就在堆中如果拼接的结果调用intern()方法返回值就在常量池中 public void test3(){String s1 javaEE;//字面量方式定义的String s2 hadoop;String s3 javaEEhadoop;String s4 javaEE hadoop;//新建了一个字符串String s5 s1hadoop;String s6 javaEE s2;String s7 s1 s2;System.out.println(s3 s4);//trueSystem.out.println(s3 s5);//falseSystem.out.println(s3 s6);//falseSystem.out.println(s3 s7);//falseSystem.out.println(s5 s6);//falseSystem.out.println(s5 s7);//falseSystem.out.println(s6 s7);//falseString s8 s7.intern();System.out.println(s3 s8);//返回值得到的s8使用的常量池中已存在的javaEEhadoop }1.4、String的常用方法 ***表示很重要 int length()返回字符串的长度 return value.lengthchar charAt(int index) 返回某索引处的字符return value[index]boolean isEmpty()判断是否是空字符串return value.length 0String toLowerCase()使用默认语言环境将 String 中的所有字符转换为小写String toUpperCase()使用默认语言环境将 String 中的所有字符转换为大写String trim()返回字符串的副本忽略前导空白和尾部空白boolean equals(Object obj)比较字符串的内容是否相同boolean equalsIgnoreCase(String anotherString)与equals方法类似忽略大小写String concat(String str)将指定字符串连接到此字符串的结尾。 等价于用“”int compareTo(String anotherString)比较两个字符串的大小String substring(int beginIndex)返回一个新的字符串它是此字符串的从beginIndex开始截取到最后的一个子字符串。String substring(int beginIndex, int endIndex) 返回一个新字符串它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。boolean endsWith(String suffix)测试此字符串是否以指定的后缀结束boolean startsWith(String prefix)测试此字符串是否以指定的前缀开始boolean startsWith(String prefix, int toffset)测试此字符串从指定索引开始的子字符串是否以指定前缀开始boolean contains(CharSequence s)当且仅当此字符串包含指定的 char 值序列时返回 trueint indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引int indexOf(String str, int fromIndex)返回指定子字符串在此字符串中第一次出现处的索引从指定的索引开始int lastIndexOf(String str)返回指定子字符串在此字符串中最右边出现处的索引int lastIndexOf(String str, int fromIndex)返回指定子字符串在此字符串中最后一次出现处的索引从指定的索引开始反向搜索注indexOf和lastIndexOf方法如果未找到都是返回-1String replace(char oldChar, char newChar)返回一个新的字符串它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。String replace(CharSequence target, CharSequence replacement)使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。String replaceAll(String regex, String replacement) 使用给定的replacement 替换此字符串所有匹配给定的正则表达式的子字符串。String replaceFirst(String regex, String replacement) 使用给定的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。//匹配boolean matches(String regex)告知此字符串是否匹配给定的正则表达式//切片String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。String[] split(String regex, int limit)根据匹配给定的正则表达式来拆分此//字符串最多不超过limit个如果超过了剩下的全部都放到最后一个元素中。1.5、String类与其他结构之间的转换 1.5.1、String 与基本数据类型、包装类之间的转换 String s1 123;//在常量池中 // int num (int) s1;//错误int num Integer.parseInt(s1);System.out.println(num);int n1 45689;String s2 String.valueOf(n1);System.out.println(s2);//123String s3 n1;//也可以在堆空间中,只要有常量参与都在堆空间中System.out.println(s3);System.out.println(s1 s3);System.out.println(s1 s3.intern());1.5.2、String 与char[]的转换 String — char[]:调用String的toCharArray() String s1 abc123; for (char c : s1.toCharArray()) {System.out.print(c);System.out.print(\t); }char[] —String: 调用String的构造器 char[] arr new char[]{h,e,l,l,o}; String s2 new String(arr); System.out.println(s2);1.5.3、String 与byte[]的转换 编码字符串--字节 (看得懂 --看不懂的二进制)解码编码的逆过程字节--字符串 (看不懂的二进制 --看得懂)说明解码时要求解码使用的字符集必须与编码时使用的字符集一致否则会出现乱码编码String -- byte[]: 调用String的getBytes() //utf-8中一个汉字占3个字节String s1 abc123中国;//1相当于ASCI码中的49byte[] bytes s1.getBytes();//使用默认的字符集进行编码System.out.println(Arrays.toString(bytes));//[97, 98, 99, 49, 50, 51]//gbk字符集中一个汉字占2个字节byte[] gbks s1.getBytes(gbk);//使用gbk字符集进行编码System.out.println(Arrays.toString(gbks));解码byte[] -- String: 调用String的构造器 String s2 new String(bytes); System.out.println(s2);//String s3 new String(gbks);//出现乱码。原因编码集和解码集不一致 String s3 new String(gbks, gbk); System.out.println(s3);1.6、常见算法题目 1.6.1、模拟一个trim方法去除字符串两端的空格 /*** author: Arbicoral* Description: 模拟一个trim方法去除字符串两端的空格*/ public class String1 {public static void main(String[] args) {String1 s1 new String1();String s abufs dbf fwf ;System.out.println(原始字符串为s);String res s1.likeTrim(s);System.out.println();System.out.println(----------------);System.out.println(去除字符串两端的空格后的结果为res);}public String likeTrim(String s){//1.转为char[]//2.通过 indexOf()挨个读取是 就去掉int ns.length();//20char ch ;char[] temp s.toCharArray();int i0;int jn-1;while (true){if (temp[i] ch){i;}elsebreak;}//走到这里说明已经排除前面的空格了 // System.out.println(i);//3while (true){if (temp[j] ch){j--;}elsebreak;} // System.out.println(j);//16//走到这里说明已经排除后面的空格了char[] res new char[j-i1];int count 0;for(int mi; mj;m){res[count] temp[m];count;}System.out.println(res.length);for (char c:res){System.out.print(c ***);}//将res数组转为StringString result new String(res);return result;} }1.6.2、将一个字符串进行反转 将字符串中指定部分进行反转。比如“abcdefg”反 转为”abfedcg” /*** author: Arbicoral* Description: 将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg” cdef--fedc* 分析* 需要两个指针* ① 将s1变为char[]找到第 start_index 个元素开始向后遍历 start_indexreverseLength个长度用一个临时char交换下标的位置* ② 将char[]恢复为字符串并返回即可*/ public class String2 {public static void main(String[] args) {String2 s new String2();String s1 xssxcc;int start_index 2;int reverseLength 3;String res s.reverseString(s1, start_index, reverseLength);//要给函数传 开始反转的下标和长度System.out.println(原始的字符串为s1);System.out.println(从下标为 start_index 开始向后数反转 reverseLength 个字符,得到反转后的字符串为 res);}/*** 反转指定长度的函数* 方式一* param start_index开始反转的下标* param reverseLength反转的字符串的长度* return*/public String reverseString(String s1, int start_index, int reverseLength){char[] array s1.toCharArray();int mid reverseLength/2;//2char temp;int i start_index;//开始反转的位置int jstart_index reverseLength-1;//结束反转的位置while (i (start_indexreverseLength-mid) j start_index reverseLength - mid){//start_index reverseLength-15; start_index reverseLength - mid3//swapif (ij){break;}else {temp array[i];array[i] array[j];array[j] temp;}//两个指针一个往前走一个向后走i;j--;}String res new String(array);//恢复为Stringreturn res;} }/*** 方式二使用String进行拼接*/public String reverseString2(String s1, int startIndex, int endIndex){if (s1 ! ){//第一部分String res s1.substring(0,startIndex);//第二部分倒着遍历for (int iendIndex; istartIndex; i--){res s1.charAt(i);}//第三部分res s1.substring(endIndex1);return res;}return null;}/*** 方式三在方式二的基础之上使用StringBuffer 或者StringBuilder替换String*/public String reverseString3(String s1, int startIndex, int endIndex){if (s1 ! ){StringBuilder sb1 new StringBuilder(s1.length());sb1.append(s1.substring(0,startIndex));for (int iendIndex; istartIndex; i--){sb1.append(s1.charAt(i));}sb1.append(s1.substring(endIndex1));return sb1.toString();}return null;}1.6.3、获取一个字符串在另一个字符串中出现的次数 比如获取“ ab”在 “abkkcadkabkebfkabkskab” 中出现的次数 /*** author: Arbicoral* Description: 获取一个字符串在另一个字符串中出现的次数*/ public class String3cc {public static void main(String[] args) {String3cc s3 new String3cc();String shortStr ab;String longStr abkkcadkabkebfkabkskab;int num s3.countNum(shortStr, longStr);System.out.println(shortStr在longStr中出现的次数为num);}public int countNum(String shortStr, String longStr){//int count 0;int n shortStr.length();//2int m longStr.length();//22char[] ch1;ch1 shortStr.toCharArray();char[] ch2 longStr.toCharArray();boolean isAllEqual false;//遍历完之后是否全部一致int start_point_s0; //记录ch1的起点每一次外循环都需要归0int start_point_l0; //记录ch2的起点不论本次循环是否找到都需要加1// 外层循环while (start_point_l(m-n)){// 开启外循环int bianli_point_sstart_point_s; // 初始化ch1的遍历点int bianli_point_lstart_point_l; // 初始化ch2的遍历点// 内层循环while (bianli_point_s(n-1)){//x0,1// 只要遇到不相等的字母就结束内层循环那么全部相等的情况下bianli_point应该等于nif (!isEqual(ch1[bianli_point_s], ch2[bianli_point_l])){break;}bianli_point_s;bianli_point_l;}// 如果ch1都参与了比较说明全部相等if (bianli_point_sn){isAllEqualtrue;}//if (isAllEqual){//走到这里说明 lastFlagtrueSystem.out.println(出现位置起点start_point_l);count;}// 参数重设定start_point_l;start_point_s0;isAllEqualfalse;}return count;}/*** 用于判断两个字符是否相等* param c1* param c2* return true; false*/public boolean isEqual(char c1, char c2){if (c1 c2){return true;}elsereturn false;} }/*** 方式二使用String的常用方法:indexOf()*/public int getNum(String shortStr, String longStr){int shortLen shortStr.length();int longLen longStr.length();int index 0;int count 0;if (longLen shortLen){//while ((index longStr.indexOf(shortStr, index)) ! -1){count;System.out.println(出现位置起点 index);index shortLen;}return count;}return 0;}1.6.4、获取两个字符串中最大相同子串 比如 str1 abcwerthelloyuiodef“; str2 “cvhellobnm” 提示 ① 使用动态规划来解决 ② 从小的开始在大的字符串里依次递减进行遍历 /*** author: Arbicoral* Description: 获取两个字符串中最大相同子串** 提示使用动态规划解决*/ public class String4 {public static void main(String[] args) {String4 s new String4();String s1 abcwerthelloyuiodef;String s2 cvhellobnm; // String s1 abcwert; // String s2 cvlert;String maxSubstring s.getMaxCommonSubstring(s1, s2);System.out.println(maxSubstring maxSubstring);}/*** 方式一获取两个字符串中最大相同子串*/public String getMaxCommonSubstring(String s1, String s2){int m s1.length();int n s2.length();int maxLen 0;//记录最大长度int endIndex 0;//记录最长公共子串的终止位置int[][] arr new int[m][n];for (int i0;im; i){//遍历s1for (int j0;jn;j){//遍历s2if (s1.charAt(i) s2.charAt(j)){if (i 0|| j0){arr[i][j] 0;}else {arr[i][j] arr[i - 1][j - 1] 1;}}else {arr[i][j] 0;}//获取最大长度if (arr[i][j] maxLen){maxLen arr[i][j];endIndex i;}}}return s1.substring(endIndex-maxLen1, endIndex1);//前闭后开所以 endIndex 要1不然取不到endIndex}/*** 获取两个字符串中最大相同子串* 方法二从小的开始在大的字符串里依次递减进行遍历*/public String getMaxSameString(String s1, String s2){if (s1.length() ! 0 s2.length() ! 0){String maxStr (s1.length() s2.length() ? s1 : s2);String minStr (s1.length() s2.length() ? s1 : s2);int length minStr.length();for (int i0; ilength; i){//遍历最短的字符串for (int x0,ylength-i; ylength; x,y){String subStr minStr.substring(x,y);//子串if (maxStr.contains(subStr)){return subStr;}}}}return null;} }1.6.5、对字符串中字符进行自然顺序排序 提示 1字符串变成字符数组。 2对数组排序选择冒泡Arrays.sort(); 3将排序后的数组变成字符串。 import java.util.Arrays;/*** author: Arbicoral* Description: 对字符串中字符进行自然顺序排序** 提示* 1字符串变成字符数组。* 2对数组排序选择冒泡Arrays.sort();* 3将排序后的数组变成字符串。*/ public class String5 {public static void main(String[] args) {String5 s new String5();String s1 zxcvbnm;System.out.println(排序前的字符串为s1);String res s.sort(s1);System.out.println(排序后的字符串为res);}/*** 对字符串中字符进行自然顺序排序* param s1:要排序的字符串* return*/public String sort(String s1){char[] array s1.toCharArray();Arrays.sort(array);String res new String(array);return res;} }二、StringBuffer、StringBuilder 高频面试题String 、StringBuffer、StringBuilder三者的异同 相同点不同点String底层使用char[]存储不可变的字符序列StringBuffer底层使用char[]存储可变的字符序列线程是安全的效率低StringBuilder底层使用char[]存储可变的字符序列jdk5.0新增的线程不安全的效率高 对比String 、StringBuffer、StringBuilder三者的的效率 从高到低排列StringBuilder StringBuffer String 2.1、StringBuffer源码分析 String str new String();//char[] value new char[0] String str1 new String(abc);//char[] value new char[]{a, b, c}StringBuffer sb1 new StirngBuffer();//char[] value new char[16];底层创建了一个长度是16的char数组 sb1.append(a);//value[0] a; sb1.append(b);//value[1] b; sb1.append(c);//value[2] c;StringBuffer sb2 new StirngBuffer(abc);//char[] value new char[abc,length() 16]//问题1System.out.println(sb2.length())//3 //问题2扩容问题如果要添加的数据底层数组盛不下了那就需要扩容底层的数组。//默认情况下扩容为原来容量的2倍2同时将原有数组中的元素复制到新的数组中。//指导意义开发中建议使用StringBuffer(int capacity) 或 StringBuilder(int capacity)2.2、StringBuffer和StringBuilder中的常用方法 * StringBuffer append(xxx)提供了很多的append()方法用于进行字符串拼接 * StringBuffer delete(int start,int end)删除指定位置的内容 * StringBuffer replace(int start, int end, String str)把[start,end)位置替换为str * StringBuffer insert(int offset, xxx)在指定位置插入xxx * StringBuffer reverse() 把当前字符序列逆转public int indexOf(String str) public String substring(int start,int end) public int length() public char charAt(int n ) public void setCharAt(int n ,char ch)重点关注 增append(xxx) //方法链的原理一直append 删delete(int start,int end) 改setCharAt(int n ,char ch) / replace(int start, int end, String str) 查charAt(int n ) 插insert(int offset, xxx)在指定位置插入xxx 长度length() 遍历for() charAt() / toString()
http://www.dnsts.com.cn/news/124943.html

相关文章:

  • 网页是网站吗最新网页游戏开服时间表
  • 石嘴山住房和城乡建设厅网站产品代理网
  • 企业电器网站建设方案长沙优化官网公司
  • 群团组织网站建设wordpress 数据库连接文件
  • 沈阳网站建设信息微网站的建设第一步是什么
  • 网站建设和维护视频做分色找工作网站
  • 源美网站建设开发一个电商网站
  • 网站建设应该怎么做医疗ppt模板下载免费完整版
  • 在线设计网站排名网站建设克隆
  • 做房产网站有哪些wordpress视频主题汉化
  • 网站设计师是什么网站备案 是域名还是空间
  • 云南seo简单整站优化wordpress模板yunnut
  • 做网站每一年都要交钱吗校园网站开发的需求和分析
  • 眉山 网站开发滨江区建设局网站
  • 网站备案 企业备案站长工具查询官网
  • 购物网站怎么做代码龙华在深圳算什么档次
  • 天津百度搜索网站排名百度seo公司哪家强一点
  • 深一互联网站建设怎样长沙部分风险区域调整
  • 杭州外贸网站建设网页设计免费模板参考网页
  • 重庆给商家企业做网站免费个人博客注册
  • 自己有域名要怎么制作网站广州外贸公司联系方式
  • 糖果网站建设策划书模板网盘怎么做电影网站
  • wordpress设置投稿厦门seo网站优化
  • 浦东企业网站建设app推广软件有哪些
  • 平阴县建设工程网站网页游戏平台十大排名
  • 爱站网综合查询装修设计公司网站排名
  • 做网站卖狗挣钱吗自己如何做网站关键词排名
  • 电脑突然多了windows优化大师宁波seo排名费用
  • 建网站找汉狮做的好的微商城网站
  • 帝国网站后台编辑器没有了用什么软件做网站原型