Java Character & String & Scanner类
- Character类
Character 类用于对单个字符进行操作。
Character 类在对象中包装一个基本类型 char 的值
char用法:
char ch = 'a'; // Unicode 字符表示形式
char uniChar = '\u039A'; // 字符数组
char[] charArray ={ 'a', 'b', 'c', 'd', 'e' };
使用Character的构造方法创建一个Character类对象:
Character ch = new Character('a');
在某些情况下,Java编译器会自动创建一个Character对象。
例如,将一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱。
// 原始字符 'a' 装箱到 Character 对象 ch 中
Character ch = 'a'; // 原始字符 'x' 用 test 方法装箱
// 返回拆箱的值到 'c'
char c = test('x');
- Character类常用的方法:
- isLetter() 是否是一个字母
- isDigit()是否是一个数字
- isWhitespace()是否是一个空格
- isUpperCase()是否是大写字母
- isLowerCase()是否是小写字母
- toUpperCase()指定字母的大写形式
- toLowerCase()指定字母的小写形式
- toString()返回字符的字符串形式,字符串的长度仅为1
- String类
String类的常见构造方法:
String(String original)
//创建一个 String 对象为 original 的拷贝。
String(char[] value)
//用一个字符数组创建一个 String 对象
String(char[] value, int offset, int count)
//用一个字符数组从 offset 项开始的count 个字符序列创建一个 String 对象。
实例:
public class test{
public static void main(String[] args){
String s1 = "hello";
String s2 = "world";
String s3 = "hello";
System.out.println(s1 == s3); //true s1 = new String("hello");
s2 = new String("hello");
System.out.println(s1 == s2); //false
System.out.println(s1.equals(s2)); //true
char c[] = {'s', 'u', 'n', ' ', 'j', 'a', 'v', 'a'};
String s4 = new String(c);
String s5 = new String(c,4,4);
System.out.println(s4); // sun java
System.out.println(s5); //java
}
}
- String 类常用方法
注意:
String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
获取字符串长度:
String类提供了.length()方法。
连接字符串:
1.
string1.concat(string2);
例:
"我的名字是 ".concat("Jeffrey");
2.
//使用'+'操作符来连接字符串
"Hello," + " runoob" + "!" //运行结果:
"Hello, runoob!"
- 创建格式化字符串
输出格式化数字可以使用 printf() 和 format() 方法。
String 类使用静态方法 format() 返回一个String 对象。
String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
System.out.printf("浮点型变量的的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
"is %s", floatVar, intVar, stringVar);
String fs;
fs = String.format("浮点型变量的的值为 " +
"%f, 整型变量的值为 " +
" %d, 字符串变量的值为 " +
" %s", floatVar, intVar, stringVar);
String方法
- Java StringBuffer & StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
示例:
public class Test{
public static void main(String args[]){
StringBuffer sBuffer = new StringBuffer("Jeffrey's 博客园:");
sBuffer.append("www");
sBuffer.append(".666");
sBuffer.append(".com");
System.out.println(sBuffer);
} //输出
Jeffrey's 博客园:www.666.com
StringBuffer 类支持的主要方法:
- public StringBuffer append(String s)
将指定的字符串追加到此字符序列。 - public StringBuffer reverse()
将此字符序列用其反转形式取代。 - public delete(int start, int end)
移除此序列的子字符串中的字符。 - public insert(int offset, int i)
将int
参数的字符串表示形式插入此序列中。 - replace(int start, int end, String str)
使用给定String
中的字符替换此序列的子字符串中的字符。
- Scanner类
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
创建Scanner对象的基本语法:
Scanner s = new Scanner(System.in)
通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:
import java.util.*; public class test {
public static void main(String[] args)
{
Scanner scan1 = new Scanner(System.in);
System.out.println("next方式接收:");
if(scan1.hasNext()){
String str1 = scan1.next();
System.out.println("输入的数据为:" + str1);
} Scanner scan2 = new Scanner(System.in);
System.out.println("nextLine方式接收:");
if(scan2.hasNextLine()){
String str2 = scan2.nextLine();
System.out.println("输入的数据为:" + str2);
}
}
}
输出:
next方式接收:
one two three
输入的数据为:one
nextLine方式接收:
one two three
输入的数据为:one two three
- next()与nextLine()区别
next():
- 1、一定要读取到有效字符后才可以结束输入。
- 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
- 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next() 不能得到带有空格的字符串。
nextLine():
- 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
- 2、可以获得空白。
Java SE5的 Scanner 类的构造器接受的就是一个 Readable 接口。
Readable 没有用作 Java标准库中其他任何方法的参数,它是单独为 Scanner 创建的,以使得 Scanner 不必将其参数限制为某个特定的类。通过这种方式,Scanner类可以作用于更多的类型。
如果你创建了一个新的类,并且想让 Scanner 可以作用于它,可以应用接口Reanable。
示例:
import java.nio.*;
import java.util.*;
public class RandomWords implements Readable{
private static Random rand = new Random(47);
//toCharArray() 将字符串对象中的字符转换为一个字符数组
private static final char[] capitals = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
private static final char[] lowers = "abdefghijklmnopqrstuvwsyz".toCharArray();
private static final char[] vowels = "aeiou".toCharArray();
private int count;
public RandomWords(int count) {this.count = count;}
public int read(CharBuffer cb){
if(count-- == 0)
return -1;
cb.append(capitals[rand.nextInt(capitals.length)]);
//给定一个参数n,nextInt(n)将返回一个大于等于0小于n的随机数
for (int i=0; i<4; i++){
cb.append(vowels[rand.nextInt(vowels.length)]);
cb.append(lowers[rand.nextInt(lowers.length)]);
}
cb.append(" ");
return 10;
}
public static void main(String args[]){
Scanner s = new Scanner(new RandomWords(10));
while(s.hasNext()) //每当s.hasNext()的时候,readable.read()就会被调用
System.out.println(s.next());
}
}
输出:
Yatemutas
Foeepueom
Goramifoh
Rasufabiw
Nuuaeeoir
Hasebituv
Ruririiud
Nusayeziq
Kudujoeow
Wakijejoe
Java Character & String & Scanner类的更多相关文章
- Java常用API(Scanner类)
Java常用API( Scanner类)1 1.Scanner类 首先给大家介绍一下什么是JavaAPI API(Application Programming Interface),应用程序编程接口 ...
- Java基础之Scanner类中next()与nextLine()方法的区别
java中使用Scanner类实现数据输入十分简单方便,Scanner类中next()与nextLine()都可以实现字符串String的获取,所以我们会纠结二者之间的区别. 其实next()与nex ...
- Java中的Scanner类
java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入.创建Scanner对象的基本语法: Scanner s = new Scanner(System. ...
- JAVA IO:Scanner类
使用Scanner类接收输入数据. JAVA提供了专门的输入数据类,此类可以完成BufferedReader类的功能,也可以方便的对输入数据进行验证,此类存放于JAVA.UTILL包中. 常用方法如下 ...
- 9. java API使用 - Scanner类
一.API概述和使用 1. 概述 API(应用程序编程接口).Java API是一本程序员字典,是JDK提供给我们使用的类的说明文档.这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实 ...
- Java中使用Scanner类进行键盘的输入详解
我们在使用Java写代码时,经常会遇到从键盘输入字符串等操作,这时候我们需要用到的是我们的Scanner类来实现获取用户从键盘上的输入操作. Scanner类是一个基于正则表达式的文本扫描器,它可以从 ...
- Java变量和Scanner类
1.变量的分类1)按数据类型分类 详细说明: 1. 整型:byte(1字节=8bit) \ short(2字节) \ int(4字节) \ long(8字节) ① byte范围:-128 ~ ...
- Java 常用对象-Scanner类
2017-11-02 16:33:11 Scanner类:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器. Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白 ...
- Java中的Scanner类和String类
1:Scanner的使用(了解) (1)在JDK5以后出现的用于键盘录入数据的类. (2)构造方法: A:讲解了System.in这个东西. 它其实是标准的输入流,对应于键 ...
随机推荐
- 并发时-修改Linux系统下的最大文件描述符限制
通常我们通过终端连接到linux系统后执行ulimit -n 命令可以看到本次登录的session其文件描述符的限制,如下: $ulimit -n1024 当然可以通过ulimit -SHn 1024 ...
- Codeforces 576C. Points on Plane(构造)
将点先按x轴排序,把矩形竖着划分成$10^3$个块,每个块内点按y轴排序,然后蛇形走位上去. 这样一个点到下一个点的横坐标最多跨越$10^3$,一共$10^6$个点,总共$10^9$,一个块内最多走$ ...
- R-FCN:基于区域的全卷积网络来检测物体
http://blog.csdn.net/shadow_guo/article/details/51767036 原文标题为“R-FCN: Object Detection via Region-ba ...
- java 注解详解
先引用一下百度百科的名词解析: 定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段. ...
- 用python的turtle画图
画5个红色的同心圆代码如下: import turtle turtle.pencolor("red") # 设置画笔的颜色 turtle.pensize() # 设置画笔的宽度 t ...
- 【题解】彩色树 51nod 1868 虚树 树上dp
Prelude 题目在这里:ο(=•ω<=)ρ⌒☆ Solution 蒟蒻__stdcall的第一道虚树题qaq. 首先很容易发现,这个排列是假的. 我们只需要求出每对点之间的颜色数量,然后求个 ...
- 隐藏超出父元素的子元素的部分:overflow
overflow : 针对超出父级的内容如何显示 值: visible 默认值,超出的内容会显示出来 auto 如果内容超出了父级,那就出现滚动条.如果内容没有超出,就没有滚动条 hidden 超出的 ...
- IDEA调试服务器上部署的程序
提出问题: 一个程序,部署在自己的电脑上,debug调试,相信大家都会,但是,如果我想debug调试非本地部署的程序怎么办呢.比如测试服务器上部署的程序. 其实这样的需求也是经常有的,比如一个大型的项 ...
- ASP.NET MVC4+EasyUI+EntityFrameWork5权限管理系统——数据库的设计(一)
快一年没写博客了,这段时间感觉好迷茫,写点博客,记录一下自己的成长过程,希望对大家也有帮助 先上图 一个用户可以有多个角色,一个用户可以属于多个部门,这些都可以控制到权限,有时特殊要求,同样的部门和角 ...
- SQL SERVER2008不在同一局域网内实现订阅发布的方法
我们知道,在新建订阅的时候,必须要使用实际服务器的真实名称才可以,IP地址,别名都不可以,在同一个局域网内是没有问题的.但是两台服务器不在同一个局域网内就不行了 要想实现订阅和发布,本人用到的最简单的 ...