======================================================================================
1.Java中八种数据类型输入输出方式
(1)输入方式 创建Scanner对象
- Scanner:一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。
- 借助此类,可以允许用户从System.in读取一个数据传给创建的该数据类型;
- Scanner分隔符模式将输入传给令牌,默认情况下匹配空格。
然后可以使用各种next()方法将得到的令牌转换成不同类型的值。
public class CinPrint {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
byte b=sc.nextByte();
short s=sc.nextShort();
int i=sc.nextInt();
long l=sc.nextLong();
float f=sc.nextFloat();
double d=sc.nextDouble();
char c=sc.next().charAt(0);
boolean n=sc.nextBoolean();
String s1=sc.next(); //读取输入一个字符串(不含空格)
String s2=sc.nextLine(); //读取输入一行字符串(可以含空字符)
sc.close(); //结束读取,关闭扫描
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(f);
System.out.println(d);
System.out.println(c);
System.out.println(n);
System.out.println(s1);
System.out.println(s2);
}
}
- // 一次可从键盘多个输入,并正确输出,因为扫描一旦开始,截至close()关闭扫描,可以一直读取多个数据,默认以空格分隔;
// 对于s1、s2的区别 ,如果输入的字符串中含有空字符,最终读取的只有空字符前的字符串给s1;而s2 的nextLine()方法可以读取包括空字符的字符串;
- //扫描仪也可以从自定义内容输入,以别的分隔符分割,通过不同的next()方法读取,并输出:
public class CinPrint {
public static void main(String[] args) {
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
}
}
// 上述代码 以空格finsh空格作为分隔符,输出结果如下:
- 详细信息、更多方法可在Java帮助文档中查看
(2)输出的不同格式
* 格式化输出方式:System.out.printf("%?",变量名)
标识符 | 含义 |
---|---|
%c | 输出单个字符 |
%d | 十进制整数 |
%f | 十进制浮点数 |
%s | 字符串 |
%b | boolean类型 |
%o | 八进制 |
%x | 十六进制 |
%% | 仅输出百分号% |
- 另外,在格式化输出时,可以借助转义字符进行限制,比如 制表符’\t’,换行符’\n’Java中的转义字符与c语言中用法相同 转义字符表查看链接
int a=12;
double d=2.12324;
System.out.printf("%x\n",a);
System.out.printf("%f\t",(float)a);
System.out.printf("%.02f",d); //对浮点型数据 使其保留两位小数输出
* 不换行输出方式:System.out.print(变量名)
- // 虽然该输出方式不会自动换行,但可以通过 +"\n" 进行换行;
- //也可以通过 +“字符/字符串” 混合输出结果;
* 自动换行输出方式:System.out.println(变量名)
- // 该输出方法同样可以混合输出,可以实现数据加法+(参与运算,注意整形提升、强制类型转化);还可以连接多个字符串或字符或数字;
2.在线编程用到的输入结束的判断 hasnext-()
- Java帮助文档中有很多针对不同类型的方法判断输入的结束;
例:
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()){
//如果没有扫描到下一个输入的int值 返回false;
int num=sc.nextInt();
String ss=String.valueOf(num);
System.out.println(ss);
}
while(sc.hasNextLine()){
String str=sc.nextLine();
int n=Integer.parseInt(str);
System.out.println(n);
}
3.整数与浮点数(强制类型转化)
** // 直接赋值:取值范围小的数据类型数据 可以赋值给 取值范围更大的数据类型数据;
** // 强制类型转化:取值范围大的数据类型数据(数值需<被赋值的数据类型的取值范围)就可以进行强制类型转化为 更小类型的数据;
byte a=1;
short b=2;
int d=4;
long l=8;
d=a;
b=a;
l=a;
d=b;
a=(byte)b; //强制类型转化
// b=d; //错误的;会造成数据丢失;必须加 (类型名)进行强制类型转化
b=(short)d; //强制类型转化
float e=1.1f;
double f=2.2;
boolean bool=true;
e=b;
f=a;
d=f;
d=(int)f;
4.字符、整型、字符串类型转化方式
(1)int 转化为 char 类型
int a=2;
char c1=(char)a;
char c2 = (char) (a + '0');
char c3 = String.valueOf(a).toCharArray()[0];
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
- // 不可以直接加括号强制类型转化;
(2)char 转化为 int 类型
char c = '1';
// 不能直接转换
int a1 = c;
int a2 = c - '0';
int a3 = Integer.parseInt(String.valueOf(c));
System.out.println(c);
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
// 还是不能强转;字符串有自己的数字字符对照编码,对于我们是未知的;
(3)int 转化为 String 类型
int a=33;
String s1 = a+"";
String s2 = String.valueOf(a);
String s3 = Integer.toString(a);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
(4)String 转化为 int 类型
String s="12";
int a1=Integer.parseInt(s);
System.out.println(a1);
(5)String 转化为 char 类型
String s="sos";
char[] c=s.toCharArray();
char c1 = s.charAt(0);
char c2 = s.charAt(1);
char c3 = s.charAt(2);
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
(6)char 转化为 String 类型
char[] ch= {'a','b','c'};
String s = String.valueOf(ch);
System.out.println(s);