数据类型
数值型
整数
赋值方式
- 十进制(最常用的)
int num = 12;
-
二进制(jdk1.7之后才有的)
以0b,0B开头,后跟一个二进制数
-
八进制
以0开头,后跟一个八进制数
- 十六进制
以0x,0X开头,后跟一个十六进制数。
10->a…15->f
为了方便阅读,会以_对整数进行分割,分割的位数没有规定。
代码
public class Demo01{
public static void main(String[] args){
//定义一个十进制数
int num = 12;
System.out.println("十进制num的值"+num);
//赋值二进制数
num = 0B0011;
System.out.println("二进制num的值"+num);
//赋值八进制数
num = 016;
System.out.println("八进制num的值"+num);
//赋值十六进制数
num = 0xA9;
System.out.println("十六进制num的值"+num);
}
}
小数
赋值
小数的赋值方式
- 正常赋值(最常用)
double d = 15.5;
- 科学计数法
数值E/e整数
代码
/**
小数赋值方式
*/
public class Demo02{
public static void main(String[] args){
//小数常用赋值
double d = 12.5;
System.out.println("d的值是"+d);
d = 0.00345;
System.out.println("d的值是"+d);
//采用科学计数法赋值
d = 3.45e-3;
System.out.println("d的值是"+d);
}
}
逻辑型
符号 | 所占空间 | 范围 |
---|---|---|
boolean | 1位(实际上是占用一个字节) | ture/false |
适用场景:
逻辑判定,流程控制中有大用
代码
public class Demo03{
public static void main(String[] args){
//声明一个boolean类型的变量
boolean flag = true;
System.out.println(flag);
//声明一个int类型的变量存放3和5的累加和
byte b = 3;
short s = 5;
//int num = b+s+flag;//boolean类型变量不能进行四则运算。
}
}
字符型
符号 | 空间 | 范围 |
---|---|---|
char | 2个字节 | 0~65536 |
注意事项:
- 给char类型变量赋值时一定要注意是单引号引起来的单个字符。
- ‘’ 字符 “” 字符串 java中的字符串的类型是String
- java采用unicode 可以使用中文
- char类型是可以直接赋值整数的 包含0的正整数
- char类型是可以参与四则运算的
- 使用\ u + 十六进制数即可 (不常用)
- 转义字符,
转变含义,在java中有些符号已经有了自己的用法,
通过转义字符,转变其含义。
\ +要转义的字符
代码
public class Demo04{
public static void main(String[] args){
//声明一个char类型的变量
char ch = 97;//将字符A赋值给了char类型变量ch存放
System.out.println(ch+1);
// java采用的是unicode u十进制的数
ch = '\u0011';
System.out.println("---"+ch+"---");
//输出'
ch = '\'';
System.out.println("---"+ch+"---");
//使用转义字符
ch = '\t';
System.out.println("---"+ch+"---");
System.out.println("abcdefgh\tigklmn");
System.out.println("abcdefghigklmn");
System.out.print("\n");
}
}
类型转换
自动转换
Tips: boolean类型是不可以进行类型转换的。
自动转换:小转大
大类型 变量名 = 小类型的值;
char
|
byte->short->int->long->float->double
强制装换
强制转换:(强转有风险,转换需谨慎)
大变小
小类型 变量名 = (小类型)大类型的变量;
如果大类型的变量的值超过了小类型的范围,结果有问题。
运算符
常见概念
int num = 10;
称为语句。左右两边的内容称为操作数。
算术
+号
用途:
- 正号
- 加法运算
- 连接符号
tips:
+号左右两边的操作数只要有一个是字符串类型那么+号的作用就是拼接作用,将+号左右两边的操作数
拼接为一个新的字符串。
代码
public class Demo01{
public static void main(String[] args){
//声明一个变量
int num = +5+4;
System.out.println(num);
// + 号左右两边的操作数只要有一个是字符串类型
// 那么+号的作用就是拼接作用,将+号左右两边的操作数
// 拼接为一个新的字符串。
System.out.println("1+1="+(1+1));
}
}
- * / %
/**
将12345分离出各个位的数
*/
public class Demo05{
public static void main(String[] args){
int num = 1234;
//通过%10将4取出
int bit = num%10;
System.out.println("个位数是"+bit);
//将num变为123
num = num/10;
//将3取出
bit = num%10;
System.out.println("十位数是"+bit);
//将num变为12
num = num/10;
//将2取出
bit = num%10;
System.out.println("百位数是"+bit);
//将1取出
bit = num/10;
System.out.println("千位数是"+bit);
}
}
自增自减
- 自增++
自增1
当++是一条单独语句的时候,前加和后加一样 都是自增1
如果不是独立一条语句
前加: 先自增 再运算
后加: 先运算 再自增 - 自减–
自减1
和++相同 不过只是-1
单目运算符。
关系运算符
-
比较基本数类型
< > < = >=
-
比较基本数据类型和引用类型
== !=
-
关系运算符最后得到的结果是一个boolean值
代码
public class Demo04{
public static void main(String[] args){
System.out.println(5<3);
//测试使用== !=
int num1 = 10;
int num2 = 20;
System.out.println(num1==num2);//比较相等
//声明两个字符串类型的变量
String str1 = "abc";
String str2 = "abc";
System.out.println(str1==str2);//得到结果为true
//System.out.println(str1>str2);//编译报错
System.out.println(str1!=str2);
}
}
逻辑运算符
& | ! && ||
注意事项
- 逻辑运算符左右两边连接的操作数是一个boolean类型的值
- & 左右两边操作数有一个为false,其结果就是false,如果都为true其结果才为true。
- | 左右两边操作数有一个为true,其结果就是true,如果都为false其结果才为false。
- ! 取反
- ^ 相同为false 不同为true
- && || 称之为短路与和短路或,&&如果第一个操作数为false其结果就是false不会执行第二个操作数。
|| 如果第一个操作数为true,整个结果就为true,不会执行第二个操作数 - & | ^ 既是逻辑运算符也是位运算符
代码例子
/**
登陆验证
*/
import java.util.Scanner;
public class Login{
public static void main(String[] args){
//设置初始密码和用户名
int regName = 123456;
int regPwd = 654321;
//提示用户输入用户名
System.out.println("请输入用户名:");
Scanner input = new Scanner(System.in);
//设置一个接受输入用户名的变量
int loginName = input.nextInt();
//提示用户输入密码
System.out.println("请输入密码:");
//设置一个接受输入密码的变量
int loginPwd = input.nextInt();
//判断输入的用户名和密码与设置的用户名和密码是否一致
boolean flag = (regName==loginName)&&(regPwd==regPwd);
//输出判断结果
System.out.println(flag?"登陆成功":"登陆失败");
}
}
赋值和扩展
运算符
**+= *= /= %= **
-
优点
简化代码量
提高编译速度
自动强转
-
缺点
不利于阅读
示例代码
public class Demo08{
public static void main(String[] args){
//声明两个变量存放两个学生分数
int zhangScore = 120;
int liScore = 98;
//声明变量存放
int result = 0;
//result += zhangScore; //result = result + zhangScore;
//result += liScore;//result = result + liScore;
result = result + zhangScore;
result = result + liScore;
System.out.println(result);
int num = 10;
byte b = 10;
// b =(byte)(b+num);
b += num;
System.out.println(b);
}
}
条件
条件运算符
三目运算符
格式:
表达式1?表达式2:表达式3
- 首先计算表达式1 的值,永远只能是true或者是false
- 如果表达式1的值是true ,这个三目运算符的结果是表达式2的值。
- 如果表达式1的值是false,这个三目运算符的结果是表达式3的值
三目运算符中的面试题:
表达式中类型会自动提升
int num = 90>100?90.0:100;
System.out.println(num);
运算符的优先级
- = 赋值最低
1:算数 > 关系 > 逻辑 > 三目 >赋值
2: 单目>双目>三目
3:加括号