JAVA自学笔记12

1、Scanner

1)JDK5后用于获取用户的键盘输入

2)构造方法:public Scanner(InputStream source)

3)System.in 标准的输入流,对应着键盘录入

4)成员方法

①public boolean hasNextXxx()

判断是否还有下一个输入项,返回布尔类型。其中Xxx可以是Int/Double等数据类型,如果需要判断是否包含下一个字符串,则可省略Xxx

public class ScannerDemo(){
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
if(sc.hasNextInt()){//键盘输入为Int时才接收
int x=sc.nextInt();
}}
}

②public Xxx nextXxx()

获取下一个输入项。

Xxx的含义与①中相同,默认情况下,Scanner使用空格,回车等作为分隔符

5)注意事项:

①常用public int NextInt()//获取一个int类型的值

public String nextLine();//获取一个String类型的值

②先获取一个数值,再获取一个字符串,会出现问题

按了回车键,把换行符(回车键)赋给了s

解决方法:

A:先获取一个数值后,再创建一个新的键盘录入对象获取字符串

B:把所有的数据都按字符串获取,需要什么类型再自行转换

2、String类

1)字符串是由多个字符组成的一串数据(字符数组) ,它是常量

2)构造方法:

①public String()

无参构造

②public String(byte[] bytes)

把byte数组转换为字符串

③public String(byte[] bytes,int offset,int length)

byte数组,作用是把某个字节数组从offset开始的以length为长度转成字符串

④public String(char[] value)

把字符数组转换为字符串

⑤public String(char[] value,int offset,int count)

类比③

⑥public String(String original)

把字符串常量值转为字符串

3)字符串的长度获取方法:public int length()

4)一旦被赋值就无法被改变(值而不是引用)

作图:

5)String字面值对象和构造方法创建对象的区别



“==”比较引用类型的地址值是否一致

“equals”默认比较引用类型的地址值,但重写后比较的是内容是否相同

String s1=new String("abcd");
String s2="abcd";
//前者创建2个对象,或者创建一个对象

字符串如果是变量名相加则先开辟空间再拼接

如果是常量值直接相加则先加,然后在常量池找,如果有就直接返回,否则再创建

public class StringDemo{
public static void main(String args[]){
public String();//空构造
String si=new String();
System.out.println("s1:"+s1);//调用toString方法,此处已被重写,由于字符
//串为空,不会输出任何东西 byte[] bys = {97,98,99,100,101};
String s2=new String(bys);
System.out.println("s2:"+s2);//abcde String s3=new String(bys,1,4);
System.out.println("s3:"+s3);//bcde char[] chs={'a','b','c','d'};
String s4=new String(chs);
System.out.println("s4:"+s4);//abcd String s4=new String(chs,0,2);
System.out.println("s5:"+s5);//ab String s6=new String("abcde");
System.out.println("s6:"+s6);//abcde
}
}

@例题1:看程序写结果

public class StringDemo{
public Static void main(String args[]){
String s1="abcd";
String s2="abc";
String s3="abcdabc";
System.out.println(s3==s1+s2);//false,属两个不同的地址值
System.out.println(s3.equals(s1+s2));//比较的是字符串的值true
System.out.println(s3=="abcd"+"abc");//即abcdabc为s3,s3与自己相等,
//true
System.out.println(s3.equals("abcd"+"abc"));//true
}
}

5)判断功能

boolean equals(Object obj)//比较字符串的内容是否相同

boolean equalsIgnoreCase(String str)//比较字符串的内容是否相同,忽略大小写

boolean contains(String str)//判断大字符串中是否包含小字符串

boolean startsWith(String str)//判断字符串是否某一字符串为开头

boolean endsWith(String str)//判断字符串是否某一字符串为结尾

boolean isEmpty()//判断字符串是否为空

String s1="abcd";
String s2="abcd";
String s3="Abcd";
String s4=""; System.out.println(s1.equalsIgnoreCase(s2));//true
System.out.println(s1.equalsIgnoreCase(s3));//true System.out.println(s1.contains(ab));//true
System.out.println(s1.contains(ad));//false System.out.println(s1.startsWith(ab));//true
System.out.println(s1.endsWith(ab));//false System.out.println(boolean isEmpty(s1))//false
System.out.println(boolean isEmpty(s4))//true

@例题2:模拟用户登录

 public class StringTest{
public static void main(String args[]){
//定义用户名和密码
String username='admin';
String password='admin'; //键盘录入用户名和密码
Scanner sc=new Scanner(System.in);
System.out.println("请输入用户名");
String name=sc.nextLine();
System.out.println("请输入密码");
String pwd=sc.nextInt(); //比较用户名和密码
for(int i=3;i>0;){
if(name.equals(username)&&pwd.equals(password)){
System.out.println("登陆成功");
break;
}
else{i--;
System.out.println("登陆失败"+"你还有"+i+"次机会");}
}
System.out.println("次数用完");
}
}

6)获取功能

public int length();//获取字符串的长度,以下均默认public

charAt(int index);//获取指定索引位置的字符

int indexOf(int ch,int fromIndex);//返回字符串在指定索引之后第一次出现某字符的索引,找不到或不存在时返回-1,ch可以是字符类型,下同

int indexOf(int ch);//返回指定字符在此字符串中第一次出现处的索引

int indexOf(String str);//返回指定字符串在此字符串中第一次出现的索引

int indexOf(int start);//从指定位置开始截取字符串,直到结尾,包括start处的字符,下同

int indexOf(int start,int end);//从指定位置开始截取字符串,直到另一指定索引中结束

7)转换功能

byte[] getBytes();把字符串转换为字节数组

char[] toCharArray();把字符串转换为字符数组

static String valueOf(char[] chs);把字符数组转换为字符串,注意通过类名调用,下同

static String valueOf(int i);把int类型的数据转换为字符串

valueOf方法可以把任意类型转为字符串

String toLowerCase();把字符串转为小写,形成一个新字符串,原字符串不变,下同

String toUpperCase();把字符串转为大写

String concat(String str);把字符串拼接

@例题3:完成以下各题

1)把数组中的数据按照指定个格式拼接成一个字符串

举例:int[] arr = {1,2,3}; 输出结果:[1, 2, 3]

int[] arr = {1,2,3};
String s="";
s+="[";
for(int i=0;i<arr.length;i++){
if(x==arr.length-1){
s+=arr[x];
s+="]";
}
if(x<arr.length-1){
s+=arr[x];
s+=" ";
}
}
System.out.println(s);

2)字符串反转

举例:键盘录入”abc” 输出结果:”cba”

答:键盘录入一个字符串-定义一个新字符串-倒着遍历每一个字符-在新字符串中把每一个字符拼接起来-输出新串

 Scanner sc=new Scanner(System.in);
System.out.print("请输入一个字符串");
String line=sc.nextLine();
//定义新串
String result="";
//把字符串转换成字符数组
char[] chs=line.toCharArray();
//倒着遍历字符数组,得到每一个字符
for(int x=chs.length-1;x>=0;x--){
result+=chs[x];
}
System.out.println("result="+result)

3)统计大串中小串出现的次数

举例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次

答:

思路:A:定义一个统计变量,初始化为0

B:先获取一次在字符串中第一次出现的索引,若返回-1,则直接返回统计变量0

若不是-1 ,说明存在,统计变量++

C:把刚才的索引加上小串的长度作为起始位置截取原始大串,得到新的字符串。并把该字符串重新赋值给大字符串。

D:重复B

String maxString="woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
String minString="java"; int count=0;
int index=maxString.indexOf(minString);//取首次出现的位置
while(index!=-1){
count++;
int startIndex=index+minString.length();
maxString=maxString.substring(StartIndex);
index=maxString.indexOf(minString);
}
return count;

JAVA自学笔记12的更多相关文章

  1. JAVA自学笔记13

    JAVA自学笔记13 1.StringBuffer类 1)线程安全的可变字符序列 线程安全(即同步) 2)StringBuffer与String的区别:一个可变一个不可变 3)构造方法: ①publi ...

  2. JAVA自学笔记11

    JAVA自学笔记11 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 B:在src目录下创建包.cn.itcast C:在cn.i ...

  3. JAVA自学笔记14

    JAVA自学笔记14 1.正则表达式 1)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则.有自己的特殊应用 2)组成规则: 规则字符在java.util.rege ...

  4. JAVA自学笔记18

    JAVA自学笔记18 1.Map接口: 1)功能: 2) Map<String,String>m=new HashMap<String,String>(); //添加元素,元素 ...

  5. JAVA自学笔记22

    JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...

  6. JAVA自学笔记26

    JAVA自学笔记26 1.网络编程 1)用来实现网络互联的不同计算机上运行的程序可以进行数据交换 2)网络模型一般泛指 OSI:(Open System Interconnection)开放系统互联参 ...

  7. JAVA自学笔记27

    JAVA自学笔记27 1.类的加载 1)当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. ①加载:就是指将class文件读入内存,并为之创 ...

  8. JAVA自学笔记09

    JAVA自学笔记09 1.子类的方法会把父类的同名方法覆盖(重写) 2.final: 1)可修饰类.方法.变量 2)修饰类时:此时该类变为最终类,它将无法成为父类而被继承 3)修饰方法时:该方法将无法 ...

  9. JAVA自学笔记05

    JAVA自学笔记05 1.方法 1)方法就是完成特定功能的代码块,类似C语言中的函数. 2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,-){ 函数体; return ...

随机推荐

  1. 【Android】Android 代码判断当前设备是否为模拟器

    [Android]Android 代码判断当前设备是否为模拟器 方法比较简单,直接粘贴代码 //判断当前设备是否是模拟器.如果返回TRUE,则当前是模拟器,不是返回FALSE public stati ...

  2. 实际生产用法CMS和G1

    java -Xms100m -Xmx100m -Xmn50m -XX:MetaspaceSize=20m -XX:MaxMetaspaceSize=20m -XX:+UseConcMarkSweepG ...

  3. Fstring

    题目描述 一个只包含A,B,C三种字符的字符串,如果其中有连续的3个由A,B,C各一个组成,则称为Fstring. 例如:BAACAACCBAAA就是,而AABBCCAABB则不是. 你的任务就是计算 ...

  4. HDU2449 Gauss Elimination 高斯消元 高精度 (C++ AC代码)

    原文链接https://www.cnblogs.com/zhouzhendong/p/HDU2449.html 题目传送门 - HDU2449 题意 高精度高斯消元. 输入 $n$ 个 $n$ 元方程 ...

  5. sql 表值函数-将一个传入的字符串用2中分隔符拆分成临时表

    USE [tms]GO/****** Object: UserDefinedFunction [dbo].[fn_StrToTable_Double] Script Date: 2017/4/26 9 ...

  6. 实现判断条件中有in的判断

    如果是简单的写sql,在where中写死就可以了,但是如果是不确定的参数呢,这个时候就需要一点处理方式了. 1.后台的写法 String[] operateResult=new String[]{&q ...

  7. idea工具maven生命周期clean,install,package等区别

    idea工具maven projects里面有9种生命周期,生命周期是包含在一个项目构建中的一系列有序的阶段. 一.最常用的两种打包方法: 1.clean,package(如果报错,很可能就是jar依 ...

  8. appium环境搭建及项目实战

    手机端自动化环境搭建比其他自动化环境搭建较为复杂,安装工具有点多,也会有很多坑,安装工具一定注意版本号对应问题. 一.我的电脑环境:win7  64位,安卓测试机4.4.2版本,Python3.6,a ...

  9. UVA11324 The Largest Clique (强连通缩点+DP最长路)

    <题目链接> 题目大意: 给你一张有向图 G,求一个结点数最大的结点集,使得该结点集中的任意两个结点 u 和 v 满足:要么 u 可以达 v,要么 v 可以达 u(u,v相互可达也行). ...

  10. Linux命令集

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...