1.String
1.概述:java.util.String.包中。使用的时候不需要导包
2.Java 程序中的所有字符串文字.如(sdsdsffsd)。都被视为此类的对象
3.字符串不可改变,他们的值在创建后不能进行改变.
1.1创建String 对象的两种方式:
1.直接赋值;
2.使用new进行创建
public class hello { public static void main(String[] avgs) { //直接赋值 String s="我是小明"; System.out.println("使用直接赋值的方式打印出来的数组是:"+s); //设置为空的字符串 String s2=new String(); System.out.println("1"+s2+"2"); //设置有参数的字符串 String s3=new String("hello world"); System.out.println("脱裤子放屁赋值字符串:"+s3); //通过字符数组进行进行创建一个新的字符串对象 char []arr=new char[]{'a','b','c'}; //主要运用与修改 String s4=new String(arr); System.out.println(s4); //传递以恶搞字节数组,根据字节数组的内存在创建一个新的字符串的对象 byte []s5=new byte[]{97,98,99,100}; //相当与ascll码 String s6=new String(s5); System.out.println(s6); } }
2.内存图
当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在.
不存在:创建新的
存在:复用
3.字符串的比较:
3.1使用非函数
==号的基本原理:
A:基本数据类型:
> int a=10; int b=20; System.out.println(a==b); / /fslae 比较的时数值
B:引用数据类型:
两个new出来的 (假)
String s1=new String("abc"); String s2=new String("abc"); System.out.println(s1==s2); //false 比较的是地址值,不是数值.
直接赋值出来的 (真)
String s1=”abc“; String s2="abc"; System.out.println(s1==s2); //true 会调用复用
直接赋值和new出来的比较 (假)
String s1=”abc“; String s2=new String("abc"); System.out.println(s1==s2); //false ,放的地址都不一样
两个键盘录入的 (假)
import java.util.*; public class hello { public static void main(String[] avgs) { Scanner sc=new Scanner(System.in); String s=sc.next(); String s1=sc.next(); System.out.println(s==s1); } }
3.2运用函数进行比较
boolean 数据类型 = 字符串名. eauals(s2); //这个区分大小写
两个直接赋值的字符串 (真)
public class hello { public static void main(String[] avgs) { String s="abcd123"; String s1="abcd123"; String s2="ABCD123"; boolean result =s.equals(s1); //不可以忽略大小写 System.out.println(result); boolean flag =s.equals(s2); System.out.println(flag); boolean flag1=s.equalsIgnoreCase(s2); //可以忽略大小写 System.out.println(flag1); } }
键盘录入的字符串是new出来的和直接赋值的 (真)
import java.util.*; public class hello { public static void main(String[] avgs) { Scanner sc=new Scanner(System.in); String s="abc"; String s1=sc.next(); boolean flag=s.equals(s1); System.out.println(flag); } }
两个键盘输入的进行比较 (true)
import java.util.*; public class hello { public static void main(String[] avgs) { Scanner sc=new Scanner(System.in); String s=sc.next(); String s1=sc.next(); boolean flag=s.equals(s1); System.out.println(flag); } }
3.3运用函数判断相等与否的实列
密码用户登入信息
import java.util.*; public class hello { public static void main(String[] avgs) { Scanner sc=new Scanner(System.in); String username="liming"; String userPassword="121788"; int count=3; while (count>0) { count--; System.out.println("请输入您的用户名:"); String username1=sc.next(); System.out.println("请输入您的用户密码:"); String userpassword=sc.next(); if(username1.equals(username)&&userpassword.equals(userPassword)) { System.out.println("登入成功!!!!!"); break; } else { System.out.println("登入失败,您还有"+(count)+"次机会"); } } } }
2.字符串的索引
1.基本格式:
Scanner sc=new Scanner(Sytsem.in); String s; s=sc.next(); for(int i=0;i<s.length();i++) { s.charAt(i); }
求小写字母,大写字母,数字的个数
import java.util.*; public class hello { public static void main(String[] avgs) { System.out.println("请输入您的字符串"); Scanner sc=new Scanner(System.in); String s; s=sc.next(); int small=0; int big=0; int math=0; System.out.println(s); for(int i=0;i<s.length();i++){ if(s.charAt(i)>='a'&&s.charAt(i)<='z') { small++; } if(s.charAt(i)>='A'&&s.charAt(i)<='Z') { big++; } if(s.charAt(i)>'0'&&s.charAt(i)<'9') { math++; } } System.out.println("数字有:"+math); System.out.println("小写数量为:"+small); System.out.println("大写数字为:"+big); } }
2.基本操作和算法:
import java.util.*; public class hello { public static void main(String[] avgs) { int arr[]=new int[3]; toString(arr); } public static void toString(int []arr) { //长度为0的意思是 int []a=new int[0]; 数组为空的意思是指: int []a=new int[]{}; if(arr==null)//判断数组是否为空 { System.out.println(""); //返回一个长度为0的"“ } if(arr.length==0)//判断数组的长度是否为0 { System.out.println("[]"); } 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.print("]"); } }