Java学习笔记
移位计算
计算机中整数总是以二进制的形式表示,例如int类型的整数7使用4字节表示的二进制如下:
00000000 00000000 00000000 00000111
类型自动提升与强制转型
运算过程中,如果参与运算的两个数的类型不一样,那么计算结果为较大类型的整型。例如short和int计算,结果总是int,原因是short首先自动被转型为int。
强制转型
int i =12345
short s=(short)i
**注意:超出范围的强制转型会得到错误的结果。
浮点数
整数运算在除数为0时会报错,而浮点数运算在除数为0时,不会报错,但会返回一个特殊值
浮点数的强制转型
浮点数可以强制转型为整数,在转型时,浮点的小数部分会被丢掉,如果转换后超过整数能表示的最大范围,将返回整型的最大值
如果要四舍五入 可以对浮点数加上0.5再强制转型
布尔运算—短路运算
如果布尔运算的表达式能提前确定结果,则后续的计算不再执行,直接返回结果。
三元运算符
Java还提供一个三元运算符b? x : y,根据第一个布尔表达式的结果,分别返回后续两个表达式之一的计算结果。
三元运算符会首先计算b,如果b为true,则只计算x,否则只计算y。
此外,x,y类型必须相同,因为返回值不是boolean,而是x和y之一。
java中字符和字符串是两种不同的类型
字符类型
字符类型char是基本数据类型,一个char保存一个Unicode字符
char c1='A'
char c2='中'
要显示一个字符的Unicode编码,只需将char类型直接赋值给int类型即可:
int n1='A'
字符串类型
和char类型不同,字符串类型String是引用类型,用“…”表示字符串,一个字符串可以存储0个到任意个字符。
转义字符 **
可以使用**+**连接任意字符串和其他数据类型
public class Main {
public static void main(String[] args) {
String s1 = "Hello";
String s2 = "world";
String s = s1 + " " + s2 + "!";
System.out.println(s);
}
}
输出是Hello world
如果用**+**连接字符串和其他数据类型,会将其他数据类型先自动转型为字符串,在连接。
public class Main {
public static void main(String[] args) {
int age = 25;
String s = "age is " + age;
System.out.println(s);
}
}
age is 25
可以使用""" …"""表示多行字符串。
字符串不可变的特性
public class Main {
public static void main(String[] args) {
String s = "hello";
System.out.println(s); // 显示 hello
s = "world";
System.out.println(s); // 显示 world
}
}
hello world
执行String s=“hello"时,JVM虚拟机先创建字符串"hello”,然后把字符串变量s指向它:
紧接着,执行s=“world"时,JVM虚拟机先创建字符串"world”,然后把字符串变量s指向它:
字符串"hello"还在,只是我们无法通过变量s访问,字符串的不可变是指字符串内容不可变。
空值null
引用类型的变量可以指向一个空值null,他表示不存在,即该变量不指向任何对象。例如:
练习
请将一组int值视为字符的Unicode编码,然后将它们拼成一个字符串:
public class
practice {
public static void main(String[] args){
int a =72;
int b =105;
int c=65281;
char a1=(char)a;
char b1=(char)b;
char c1=(char)c;
String s = ""+a1 + b1 + c1;
System.out.println(s);
}
}
输入和输出
System.out.println() 用于向屏幕输出一些内容,println是print line的缩写,表示输出并换行。
格式化输出
public class Main {
public static void main(String[] args) {
double d = 3.1415926;
System.out.printf("%.2f\n", d); // 显示两位小数3.14
System.out.printf("%.4f\n", d); // 显示4位小数3.1416
}
}
java的格式化功能提供了多种占位符,可以把各种数据类型格式化成指定的字符串:
输入
从控制台读取一个字符串和一个整数:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象
System.out.print("Input your name: "); // 打印提示
String name = scanner.nextLine(); // 读取一行输入并获取字符串
System.out.print("Input your age: "); // 打印提示
int age = scanner.nextIn