Java数据类型
public class BasicDataElement {
public static void main(String[] args) {
int num1 = 15;
short num2 = 34;
long num3 = 43434L;//整数默认是int类型,L用来表示是long类型
float num4 = 4.5F;//小数默认是double,F用来表示float
double num5 = 5.445154654;
char name = ‘王‘;
String place = "Beijing";//String不是关键词,是一个类
boolean flag = false;//Java不允许使用0和非0来代表boolean
//银行业务怎么表示?使用BigDecimal数学工具类,而不用浮点数
//避免使用浮点数来进行比较
float f1 = 0.1F;
double f2 = 1/10;//0.1
System.out.println(f1 == f2);//结果是false,因为浮点数都是近似的
}
}
String不是基本数据类型,而是一个类,但是可以当成基本数据类型来操作,因为Java提供了自动装箱和自动拆箱的机制。
/*String对象提供了自动装箱,不用构造器就可以为对象赋值
*因为Java会自动在对象池中开辟空间保存字符串对象,赋值时只要把对象指向对象池即可
*但是用new String()实例化时会开辟新的空间,将不再使用对象池中的对象
*为了比较字符串对象,建议使用equals()方法
* */
public class StringTest {
public static void main(String[] args) {
String s1 = "hello"; //在对象池中保存了"hello"字符串,以供重复使用
String s2 = "hello"; //s1和s2都指向了对象池里的同一个"hello"字符串
String s3 = new String("hello"); //s3指向的是新开辟的空间
System.out.println(s1 == s2); //true
System.out.println(s2 == s3); //false
System.out.println(s2.equals(s3)); //true
}
}
类型转换
Java运算符
//一些运算符
import java.sql.SQLOutput;
public class operator {
public static void main(String[] args) {
//java里没有2^3这样的幂运算,必须使用工具类Math.^是位运算异或
double pow = Math.pow(2,3);
System.out.println(pow);
System.out.println(2<<2);//还可以用移位运算
//逻辑运算符 && || !
boolean a = true;
boolean b = false;
System.out.println(a&&b);
System.out.println(a||b);
System.out.println(!(a||b));
//字符串连接符 +。只要左边有一个字符串就把两边连起来
int c = 10;
int d = 20;
System.out.println(c+d);//这里的+是数学运算符
System.out.println(""+c+d);//输出1020,+成为了字符串连接符
System.out.println(c+d+"");//输出30,因为运算顺序从左到右
//唯一的三元运算符,javaEE中常用到
int max = (10<20)?20:10;
System.out.println(max);
}
}
逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
! | 逻辑非 | !a,结果和a的结果正好相反 |
//定义变量
int i = 10;
int j = 20;
int k = 30;
//& “与”,并且的关系,只要表达式中有一个值为false,结果即为false
System.out.println((i > j) & (i > k)); //false & false,输出false
System.out.println((i < j) & (i > k)); //true & false,输出false
System.out.println((i > j) & (i < k)); //false & true,输出false
System.out.println((i < j) & (i < k)); //true & true,输出true
System.out.println("--------");
//| “或”,或者的关系,只要表达式中有一个值为true,结果即为true
System.out.println((i > j) | (i > k)); //false | false,输出false
System.out.println((i < j) | (i > k)); //true | false,输出true
System.out.println((i > j) | (i < k)); //false | true,输出true
System.out.println((i < j) | (i < k)); //true | true,输出true
System.out.println("--------");
//^ “异或”,相同为false,不同为true
System.out.println((i > j) ^ (i > k)); //false ^ false,输出false
System.out.println((i < j) ^ (i > k)); //true ^ false,输出true
System.out.println((i > j) ^ (i < k)); //false ^ true,输出true
System.out.println((i < j) ^ (i < k)); //true ^ true,输出false
System.out.println("--------");
//! “非”,取反
System.out.println((i > j)); //false
System.out.println(!(i > j)); //!false,,输出true
短路逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
&& | 短路与 | 作用和&相同,但是有短路效果 |
|| | 短路或 | 作用和|相同,但是有短路效果 |
在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。
- 逻辑与&,无论左边真假,右边都要执行。
- 短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
- 逻辑或|,无论左边真假,右边都要执行。
- 短路或||,如果左边为假,右边执行;如果左边为真,右边不执行。
int x = 3;
int y = 4;
System.out.println((x++ > 4) & (y++ > 5)); // 两个表达都会运算
System.out.println(x); // 4
System.out.println(y); // 5
System.out.println((x++ > 4) && (y++ > 5)); // 左边已经可以确定结果为false,右边不参与运算
System.out.println(x); // 4
System.out.println(y); // 4
数据输入
我们可以通过 Scanner 类来获取用户的输入。使用步骤如下:
1、导包。Scanner 类在java.util包下,所以需要将该类导入。导包的语句需要定义在类的上面。
import java.util.Scanner;
2、创建Scanner对象。
Scanner sc = new Scanner(System.in);// 创建Scanner对象,sc表示变量名,其他均不可变
3、接收数据
int i = sc.nextInt(); // 表示将键盘录入的值作为int数返回。