Java 基础day03
文章目录
整数赋值方式
public class Demo02{ public static void main(String[] args){ //1:声明一个byte类型的变量 byte num = 120; System.out.println("byte类型的变量num的值是:num="+num); //2:声明一个short类型的变量 short sh = 10000; System.out.println("shrot类型的变量sh = "+sh); //3:声明一个int类型的变量 int in = 123456789; System.out.println("int类型的变量in = "+in); //4:声明一个long类型的变量 long l = 12345678900L; System.out.println("long类型的变量l = "+l); } }
tips
- 字节型 符号 所占空间 范围
byte 1字节 -128-127
注意事项
超过byte范围的数据无法正常给byte类型的变量赋值
报错信息:
错误: 不兼容的类型: 从int转换到byte可能会有损失
byte num = 1000;
短整型 符号 所占空间 范围
short 2字节 -32768-32767 ±3W
注意事项
超过short范围的数据无法正常给short类型的变量赋值
整型 符号 所占空间 范围
int 4字节 ±21亿- 长整型 符号 空间 范围
long 8字节 灰常大
注意事项:
错误: 过大的整数: 12345678900
long l = 12345678900;
所有的整数默认的数据类型是int,当把查过int范围的字面值
赋值给long类型变量时,需要在字面值后加"l"或者"L"
注意当给byte和shot赋值时,只要数值不超过byte和short的
取值范围,就可以正常赋值。
对于某些特别大的整数值,long类型也是无能为力的。
后期通过BigDecimal、BigInteger去存储。
各种进制赋值方式
十进制赋值:(最常用的)
int num = 10;
二进制:jdk1.7之后才有的
以0B 0b开头 后跟一个二进制的值
八进制:
以0开头 后跟一个八进制的值
16进制:
以0X 0x 后跟一个十六进制的值
10->a … 15->f
为方便阅读,经常会通过_分割整个整数
代码
public class Demo01{
public static void main(String[] args){
//十进制赋值:
int num = 10;
//二进制赋值
num = 0B101;
System.out.println("二进制num的值是:"+num);
//8进制
num = 013;
System.out.println("8进制num的值是:"+num);
//16进制
num = 0x2A;
System.out.println("16进制num的值是:"+num);
num = 12_345_678;
System.out.println("num的值是:"+num);
}
}
小数
代码
public class Demo03{
public static void main(String[] args){
//声明一个小数
double d = 3.12;
System.out.println(10/3.0);
//声明一个小数
float f = 3.12F;
System.out.println(f);
double num = 0.3;
System.out.println(num==(0.1+0.2));
//System.out.println(10/0);
System.out.println(10/0.0);
System.out.println(-10/0.0);
System.out.println(-0.0/-0.0==0.0/0.0);// NaN非数 一个自己和自己不相等
}
}
tips
计算机存储小数是一个近似值。
小数:
双精度:
符号 精确程度 空间
double 小数点后15-16位 8字节
单精度
java中的小数默认类型是double,当把一个double类型的字面值
赋值给float变量存放的时候,要在字面值后加"F""f"
System.out.println(10/0.0); 正无穷
System.out.println(-10/0.0);负无穷
System.out.println(-0.0/-0.0==0.0/0.0);NaN
赋值
小数的赋值方式:
正常赋值:(最常用)
double d = 12.12;
科学计数法:
数值E/e 整数
代码
public class Demo02{
public static void main(String[] args){
// 正常赋值小数
double d = 12.1;
//d = .5;
d = 0.000314;
System.out.println("d的值是:"+d);
//通过科学计数法给d重新赋值
d = 3.14E-4;
System.out.println("d的值是:"+d);
}
}
逻辑型
java规范 编写代码过程中要遵守的
jvm规范 虚拟机规范 hotspot boolean类型存储还是1和0
逻辑型 (布尔型)
符号 所占空间 范围
boolean 1位(实际存储的是1个字节) true/false
boolean 类型的变量不能参与四则运算
适用场景:
逻辑判定,流程控制中有大用
代码
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;
}
}
字符型
字符型:
符号 空间 范围
char 2 0-65535
tips
- 1:给char类型变量赋值时一定要注意是单引号引起来的单个字符。
- 2: ‘’ 字符 “” 字符串 java中的字符串的类型是String
- 3: java采用unicode 可以使用中文
- 4:char类型是可以直接赋值整数的 包含0的正整数
- 5:char类型是可以参与四则运算的
- 6: 使用\ u + 十六进制数即可 (不常用)
- 7: 转义字符,
- 转变含义,在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");
}
}
类型转换
自动转换:
boolean类型是不可以进行类型转换的
自动转换:
小变大
大类型 变量名 = 小类型的值;
char
|
byte->short->int->long->float->double
代码
public class Demo06{
public static void main(String[] args){
//声明一个byte类型的变量
byte b = 12;
// 声明一个int类型的变量存放byte类型的数据
int num = b;//把变量b中的值赋值给int类型的变量num存放
//声明一个boolean类型的变量
boolean f = true;
//num = f;
//声明一个char类型
char ch = 'a';
num = ch;`
System.out.println(num);
}
}
强制转换:
强制转换:(强转有风险,转换需谨慎)
大变小
小类型 变量名 = (小类型)大类型的变量;
如果大类型的变量的值超过了小类型的范围,结果有问题。
代码
int num = 300;
//将int类型的值赋值给byte
byte result = (byte)num;
System.out.println(result);
运算符
常见概念
算数 +号
+ 在java中一共有3种用途
1:正号
2: 加法运算
3:连接符号
// + 号左右两边的操作数只要有一个是字符串类型
// 那么+号的作用就是拼接作用,将+号左右两边的操作数
// 拼接为一个新的字符串。
代码
public class Demo01{
public static void main(String[] args){
int num = +5+4;
System.out.println(num);
System.out.println("1+1="+(1+1));
}
}
-号
负号
减法运算
* % /
代码
public class Demo02{
public static void main(String[] args){
int num = 10/3;// int类型计算之后的结果还是整数
System.out.println("结果是:"+num);
num = 10%3;
System.out.println("结果是:"+num);
//声明变量num = 1234
num = 1234;
//获取个位
int bit = num%10;
System.out.println("个位:"+bit);
//将1234 变为123
num = num/10;
//获取最后一位
bit = num%10;
System.out.println("十位:"+bit);
//123 变为12
num = num/10;
//获取最后一位
bit = num%10;
System.out.println("百位:"+bit);
//12 变为1
num = num/10;
System.out.println("千位:"+num);
}
}
自增 自减
自增++
自增1
当++是一条单独语句的时候,前加和后加一样 都是自增1
如果不是独立一条语句
前加: 先自增 再运算
后加: 先运算 再自增
自减–
自减1
和++相同 不过只是-1
单目运算符。
代码
public class Demo03{
public static void main(String[] args){
//声明一个变量
int num = 10;
//自增
//num++;
num--;
System.out.println(num);
num = 10;
//自增
//++num;
--num;
System.out.println(num);
//将num归为10
num = 10;
//将num++的结果赋值给变量存储
int result = num++;//先运算 再自增
System.out.println("result="+result+",num="+num);
//num归为10
num = 10;
result = ++num;
System.out.println("result="+result+",num="+num);
//声明变量
int j = 10;
int k = 4;
result = j-- - k++ + ++k + k-- + ++j;
System.out.println("result="+result+",k="+k+",j="+j);
}
}
分析题:
[外链图片转存失败(img-ZLTIA7lT-1562831939649)(C:\Users\余爽\AppData\Roaming\Typora\typora-user-images\1562830722231.png)]
关系
比较基本数据类型
< >= <=
比较基本数据类型和引用类型
== !=
关系运算符最后得到的结果是一个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);
}
}
[外链图片转存失败(img-1EBzltlY-1562831939650)(C:\Users\余爽\AppData\Roaming\Typora\typora-user-images\1562830960001.png)]
逻辑
& | ! ^ && ||
1:逻辑运算符左右两边连接的操作数是一个boolean类型的值
2:& 左右两边操作数有一个为false,其结果就是false,如果都为true其结果才为true。
3:| 左右两边操作数有一个为true,其结果就是true,如果都为false其结果才为false。
4:! 取反
5:^ 相同为false 不同为true
6:&& || 称之为短路与和短路或,&&如果第一个操作数为false其结果就是false不会执行第二个操作数。
|| 如果第一个操作数为true,整个结果就为true,不会执行第二个操作数
& | ^ 既是逻辑运算符也是位运算符
代码
public class Demo05{
public static void main(String[] args){
// 通过一个运算符连接不是boolean
System.out.println("测试&运算符");
System.out.println(true&false);
System.out.println(true&true);
System.out.println(false&false);
System.out.println(false&true);
System.out.println("测试&&运算符");
System.out.println(true&&false);
System.out.println(true&&true);
System.out.println(false&&false);
System.out.println(false&&true);
System.out.println("测试|运算符");
System.out.println(true|false);
System.out.println(true|true);
System.out.println(false|false);
System.out.println(false|true);
System.out.println("测试||运算符");
System.out.println(true||false);
System.out.println(true||true);
System.out.println(false||false);
System.out.println(false||true);
System.out.println("测试!运算符");
System.out.println(!false);
System.out.println(!true);
System.out.println("测试^运算符");
System.out.println(true^false);
System.out.println(true^true);
System.out.println(false^false);
System.out.println(false^true);
}
}
代码例子:
/**
模拟登录:
*/
public class LoginV1{
public static void main(String[] args){
//声明两个变量存放注册的信息
int regUname = 123;
int regPwd = 123;
//声明两个变量存放登录信息
int loginUname = 123;
int loginPwd = 234;
boolean flag = (regUname==loginUname) && (regPwd==loginPwd);
System.out.println(flag);
}
}
tips:
- 如何实现用户输入:
1:在当前类的头顶上编写如下代码:
import java.util.Scanner;
2: 在代码中编写如下代码: //只需要写一次
Scanner input = new Scanner(System.in);
3: 在上述信息编写完成之后,编写如下代码:
int num = input.nextInt();
如何实现用户输入代码
import java.util.Scanner;
public class LoginV2{
public static void main(String[] args){
//声明两个变量存放注册的信息
int regUname = 123;
int regPwd = 123;
//给用户提示信息
System.out.println("请输入用户名>>>>>");
Scanner input = new Scanner(System.in);//只需要写一次
int loginUname = input.nextInt();//获取用户键盘上输入的值
System.out.println("请输入密码>>>>>");
int loginPwd = input.nextInt();
//通过&&判定是否登陆成功
boolean flag = (regUname==loginUname)&&(regPwd==loginPwd);
System.out.println(flag);
}
}
赋值和拓展
注意事项
条件运算符:三目运算符
格式:
表达式1?表达式2:表达式3
首先计算表达式1 的值,永远只能是true或者是false
如果表达式1的值是true ,这个三目运算符的结果是表达式2的值。
如果表达式1的值是false,这个三目运算符的结果是表达式3的值
代码
public class Demo06{
public static void main(String[] args){
// 计算两个数的最大值:
//声明2个变量存放值
int num1 = 20;
int num2 = 30;
System.out.println(num1>num2);
//三目运算符
int max = 0;//num1>num2?num1:num2;
System.out.println("num1和num2中大的值是:"+max);
//计算三个数的最大值
int num3 = 26;
max = num1>num2?num1:num2>num3?num1>num2?num1:num2:num3;
System.out.println("num1和num2,num3中大的值是:"+max);
}
}
常见面试题:
/**
三目运算符中的面试题:
表达式中类型会自动提升
int num = 90>100?90.0:100;
System.out.println(num);
*/
public class Demo07{
public static void main(String[] args){
// 判定一个数字奇数还是偶数
int num = -1;
// 被除数-被除数/除数*除数
String str = num%2==1?"奇数":"偶数";
System.out.println(str);
}
}
位
运算符优先级:
运算符的优先级:
= 赋值最低 扩展运算符
条件
1:算数 > 关系 > 逻辑 > 三目 >赋值
2: 单目>双目>三目
3:加括号