美文网首页
JAVA 强制类型转换和字符串类型

JAVA 强制类型转换和字符串类型

作者: 钟志弘 | 来源:发表于2019-03-20 13:35 被阅读0次

强制类型转换

JAVA 强制类型转换根据基本数据类型的大小考虑是否会丢失精度,例如:
int-> long 不会丢失精度。
long->int 可能会丢失精度
char->int, short->int, byte->int 不会丢失精度。
int->double 不会丢失精度。
int->float 可能会丢失精度。

强制类型转换格式和c/c++一样

double x = 9.99
int nx = (int) Math.round(x)

字符串

Java的字符串是Unicode字符序列。Java本身没有内置字符串,但是在标准库中定义:java.lang.string;

字串

String greeting = "Hello";
String s = greeting.substring(0,3); // Hel

字符串拼接

字符串拼接有2种主要方法,第一使用算术运算符,第二种使用字符串构建器。
使用算术运算符

// Help!
String greeting = "Hello";
String s= greeting.substring(0,3)+"p!"

理论: 不可变的字符串对象

String类对象称为不可变字符串, 字符串"Hello" 永远包含H E L L O 代码单元序列,而不能改变其中任何一个字符: 例如在c/c++中 greeting[3] = 'o' 这种语句在java中是不被允许的。修改字符串可以让他引用另一个字符串,就像上面做的一样。

注意: 和C/C++不一样 ,字符串不是字符类型的数组。
判断字符串是否相等
s.equals(x); // true or false

与c++的对比

 在java中不能重载算术运算符,意味着不能使用 str3 = str1 + str2,或者 if(str1 == str2)  这种表达式

StringBuilder java.lang.StringBuilder

函数名 作用
StringBuilder() 构造器函数
int length() 返回构造器活缓冲器中的代码单元数量
StringBuilder append(String s) 追加字符串并返回this指针
StringBuilder append(char c) 追加字符并返回this指针
StringBuilder appendCodePoint(int cp) 追加一个代码点,并返回其转换未一个或两个代码单元并返回this
void setCharAt(int i, char c) 将第i个代码单元设置位c
StringBuilder insert(int offset, String str) 在 offset 位置插入一个字符串并返回this
StringBuilder insert(int offset, char c) 在offset位置插入一个字符并返回this
StringBuilder delete(int startIndex, int endIndex) 删除startIndex 到 endIndex区间的字符串
String toString() 返回一个与构造器或缓存器内容相同的字符串

码点及码点单元

代码单元

Java的字符串由 char值序列组成。char数据类型是一个UTF-16编码表示Unicode码点的代码单元。 大多数Unicode使用一个代码单元表示就够了,但是辅助字符需要一对代码单元表示。

使用 length() 返回代码单元数量(不是码点数量)
使用 charAt(int i)得到第i个代码单元

码点

想要得到第i个码点,使用:

int index = greeting.offsetByCodePoints(0,i);
int cp = greeting.codePointAt(index);

判断一个码点是否为辅助字符使用:

int cp = sentence.codePointAt(i);
Character.isSupplementaryCodePoint(cp)) i+=2;
else i++;

输入输出 Scanner java.util.Scanner

输入读取

通过控制台进行输入,需要构造一个与标准输入流(system.in)关联的Scanner:

Scanner in = new Scanner(System.in);
System.out.print("what is your name");
String name = in.nextLine(); // 包含空格
String name2 = in.next(); // 不包含空格
String age = in.nextInt(); // 读取整数
String dage = in.nextDouble();// 读取浮点数

Scanner 函数

函数名 描述
Scanner(InputStream in) 用给定的输入流创建一个Scanner对象
String nextLine() 读取输入的下一行的内容
String next() 读取输入的下一个单词(空格作为分隔符)
int nextInt() 读取并转换下一个表示整数或浮点数的字符序列
double nextDouble() 读取并转换下一个表示整数或浮点数的字符序列
boolean hasNext() 读取输入流中是否还有其他单词
boolean hasNextInt() 检测是否还有整数或夫电视的下一个字符序列
boolean hasNextDouble() 检测是否还有整数或夫电视的下一个字符序列
java.io.Console 对象

static char[] readPassword(String prompt, Object ... args);
static String readLine(String prompt, Object...args);

格式化输出数字
转换符 类型
d 十进制整数
x 十六进制整数
o 八进制整数
f 定点浮点数
e 指数浮点数
g 通用浮点数
a 十六进制浮点数
s 字符串
c 字符
b 布尔
h 散码列
tx/Tx 时间日期(T强制大写,已经过时)
% 百分号
n 与平台有关的换行符
格式化标志
标志 目的 举例
+ 打印整数和负数的符号 -300 or + 300
空格 在整数之前添加空格 ( 33.33)
0 在数字前面补0 033
- 左对齐 (33.33 )
( 负数包含在括号内 (3333)
添加分组分隔符 3,33

文件的输入和输出

如果要对文件进行操作,需要使用File对象构造一个Scanner对象,例如:

文件读取对象构造
Scanner in = new Scanner(Paths.get("C:\\mydirectory\\myfile.txt","utf-8")
文件写入对象构造
Scanner in= new Scanner(Paths.get("C:\\myfile.txt")); 
java.util.Scanner

Scanner(File f);
Scanner(String data);

java.io.PrintWriter

PrintWriter(String fileName);

java.nio.file.Paths
static Path get(String pathname);

相关文章

  • JavaScript散乱(一)

    变量和计算 js中使用typeof能得到哪些类型? 强制类型转换 可能引起强制类型转换的操作 字符串拼接 ==运算...

  • 其他类型转换成字符串类型

    数据类型强制转换 字符串相关数据类型转换

  • JAVA基础第四天

    JAVA数据类型---布尔类型; 数据类型转换自动数据类型转换 强制数据类型转换

  • 第三章 JavaScript中的数据间类型的转换

    数据的类型转换分为强制类型转换和非强制类型转换,强制类型转换也可以称为显示转换,非强制类型转换也可以称为隐式转换。...

  • 你不知道的的JS(中卷)-第四章

    第四章 强制类型转换 1.值类型转换JS中的强制类型转换总是返回标量基本类型值,如字符串、数字和布尔值,不会返回对...

  • JAVA 强制类型转换和字符串类型

    强制类型转换 JAVA 强制类型转换根据基本数据类型的大小考虑是否会丢失精度,例如:int-> long 不会丢失...

  • 强制类型转换【Java提高十】

    在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换。...

  • Java–强制类型转换

    在java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换。...

  • java数据类型

    1、整型拓展 2、浮点数 3、类型转换 java强制类型转换和自动类型转换。自动类型转换是程序执行过程中自动进行转...

  • Java强制类型转换

    Java强制类型转换 语法:“(”+“目标类型”+“)”+“想要转换的值”; 例如: 结果 9 Java中如果将...

网友评论

      本文标题:JAVA 强制类型转换和字符串类型

      本文链接:https://www.haomeiwen.com/subject/yeqzmqtx.html