一 数据类型
--1,基本类型--一共8种
--整数型4: byte short int long
--浮点型2: float double
--字符型1: char
--布尔型1: boolean
--2,练习
--测试取值范围
package cn.tedu.basic;
//测试取值范围
public class Test1 {
public static void main(String[] args) {
//整数型 byte short int long
//变量的三要素:变量类型 变量名=变量值
byte x = Byte.MIN_VALUE;//定义变量,记录byte最小值
byte y = Byte.MAX_VALUE;//定义变量,记录byte最大值
System.out.println(x);//打印x的值
System.out.println(y);//打印y的值
short a = Short.MIN_VALUE ;//定义变量,记录short最小值
short b = Short.MAX_VALUE;//定义变量,记录short最大值
System.out.println(a);//-32768
System.out.println(b);//32767
//int - Integer
int m = Integer.MIN_VALUE ;//定义变量,记录int最小值
int n = Integer.MAX_VALUE ;//定义变量,记录int最大值
System.out.println(m);//-2147483648
System.out.println(n);//2147483647
//long - Long
long q = Long.MIN_VALUE ;//定义变量,记录long最小值
long w = Long.MAX_VALUE ;//定义变量,记录long最大值
System.out.println(q);//-9223372036854775808
System.out.println(w);//9223372036854775807
//浮点型:float double
//float-Float
float c = Float.MIN_VALUE ;//定义变量,记录float最小值
float d = Float.MAX_VALUE ;//定义变量,记录float最大值
System.out.println(c);//1.4E-45
System.out.println(d);//3.4028235E38
//double-Double
double e = Double.MIN_VALUE ;//定义变量,记录double最小值
double f = Double.MAX_VALUE ;//定义变量,记录double最大值
System.out.println(e);//4.9E-324
System.out.println(f);//1.7976931348623157E308
//float和double区别?占用空间不一样,取值范围也不一样
//精度不一样,double更精确.
//布尔型 boolean true/false
boolean g = true;
//TODO 字符型 char--数据被一对单引号引来的
char h1 = '?' ;
char h2 = '1' ;
char h3 = 'a' ;
char h4 = 655 ;
//TODO 面试题:char类型可以存一个中文汉字吗?-可以
char h5 = '中';
System.out.println(h5);
System.out.println(h1);
System.out.println(h2);
System.out.println(h3);
//由于h4是char类型,允许存一个整数100,但是,
//使用时,会 查询ascii码表,查出来数字100对应的字符,
//然后使用字符本身
//ascii码表只规定了数字0~127对应的字符
//128~65535呢?对应的字符默认的?
System.out.println(h4);//100->d
}
}
--描述个人信息
package cn.tedu.basic;
import java.util.Scanner;//导入包
//测试个人信息 -- 使用 + 动态拼接字符串
public class Test2 {
public static void main(String[] args) {
//1,如果是一长串的数据,不是8大基本类型
//就是字符串类型,数据被一对双引号引起来
// System.out.println("大家好,我叫皮皮霞");
//静态数据 动态数据 把字符串里的动态数据,提取.
//String name = "渣渣辉";//定义变量,记录人名-太死板
//TODO 名字可以动态的接收键盘输入的值
String name = new Scanner(System.in).nextLine();
//TODO 实现 动态的拼接 字符串 +
System.out.println("大家好,我叫"+name);
//练习
// System.out.println("M国确诊人数10000000");
//int number = 10000000 ;//定义变量,记录人数-太死板
//动态的接收键盘输入的值
int number = new Scanner(System.in).nextInt() ;
System.out.println("M国确诊人数"+number);
// System.out.println("10000000呢M国确诊人数");
System.out.println(number+"呢M国确诊人数");
// System.out.println("M国有10000000的确诊人数");
//如果动态数据在中间, "+????+"
System.out.println("M国有"+number+"的确诊人数");
}
}
--交换变量的值
package cn.tedu.basic;
import java.util.Scanner;
//测试 变量值的交换
public class Test3 {
public static void main(String[] args) {
//1,定义变量a b
int a = new Scanner(System.in).nextInt();//TODO 动态接收键盘输入的值
int b = new Scanner(System.in).nextInt();
System.out.println("交换前: a="+a+",b="+b);
//2,开始交换
int c = a ;//定义c,记录a的值
a = b ;//a没值了,等着赋值,把b的值给a
b = c ;//把c的值交给b
//TODO 3,打印值 --用+拼接字符串
System.out.println("交换后: a="+a+",b="+b);
//TODO 交换m n的值
int m = 10;
m = 20;//变量的值可以随时修改,把m改成20
System.out.println(m);//20
m = 30;//把m改成30
System.out.println(m);//30
}
}
二 基本类型的字面值(5条)
--1,代码
package cn.tedu.basic;
//测试 基本类型的字面值
public class Test1 {
public static void main(String[] args) {
//1,小数字面值的类型默认就是double
double a = 9.3 ;
//2,整数的字面值默认就是int类型
int b = 10000 ;
//3,如果在范围内,可以直接赋值
char c = 65535 ;//0~65535
//4,字面值后缀l f d
//l/L -> long f/F -> float d/D -> double
float d = 9.3f;
//后缀f--把9.3从默认的double类型变成float类型
long e = 22000000000000L ;
//后缀L--把右侧的整数从默认的int类型变成long类型
double f = 3d ;
//后缀d--把3从默认的int类型转成double类型
//5,进制前缀 -- 了解
//二进制 -- 0b???
//八进制 -- 0??
//十进制
//十六进制 --0x????
}
}
三 基本类型的类型转换
--1,概述
把大类型和小类型的数据进行互转
--2,测试
package cn.tedu.basic;
//测试 类型转换
public class Test2 {
public static void main(String[] args) {
//1,小转大/隐式转换 long->double
long a = 1000;
double b = a ;
//拿着右侧的小类型的a 给,左侧的大类型的b赋值--直接赋值
//2,大转小/显式转换 float->int
float m = 1.3f ;
// int n = m ;
int n = (int) m ;
//拿着右侧的大类型的m 给,左侧的小类型的n赋值
//--不能直接赋值,需要强转
//TODO 面试题:显式转换 和 隐式转换 区别?
// 小int->大double
int x = 10;
double y = x;//小转大,直接写
double c = 9.9;
int d = (int)c ;//大转小,需要强转--显式转换
System.out.println(d);//9
//由于d是整数类型,只存整数部分
}
}
四 运算规则(5条)
--1,代码
package cn.tedu.basic;
//测试 运算规则
public class Test3 {
public static void main(String[] args) {
//1,结果和大的类型一致
System.out.println(3/2);
//int/int->int === 1
System.out.println(3d/2);
//double/int->double ===1.5
System.out.println(3/2f);
//int/float->float ===1.5
//2,byte short char参与运算后的结果是int类型
byte a = 3 ;
byte b = 4 ;
//右侧的运算结果是int类型,给左侧的小类型byte赋值--需要强转
// byte c = a+b;//大转小--需要强转
byte c = (byte)(a+b);
//3,整数运算溢出
//光速运行一年是多少米 300000000m/s
System.out.println(300000000L*60*60*24*365);
//由于运算结果太大了,超出了int范围,所以需要把类型
//从默认的int类型 扩大成 long类型--加后缀L
//4,小数运算结果不精确
System.out.println(1-0.8);
//5,小数运算特殊值
System.out.println(3.14/0);//Infinity
System.out.println(0/0.0);//NaN
}
}
五 运算符
--1,分类
--算术运算符
+-*/ % ++ --
--三元运算符
1 ? 2 : 3
--比较运算符(结果是boolean类型)
== !=
--逻辑运算符(结果是boolean类型)
& | && || + !(取反/非)
--赋值运算符
= += -= *= /=
--短路与/或
&--单与--表示并且关系
--1 & 2,如果结果想得到true,要求1和2都是true
| --单或 --表示或者关系
--1 | 2,如果结果想得到true,要求1为true或2为true
&&--双与/短路与--高效
--1 && 2,2有可能会被短路,,当1为false时,2就没必要执行了,就被短路了,提高了效率
||--双或/短路或--高效
--1 || 2,2有可能会被短路,,当1为true时,2就没必要执行了,就被短路了,提高了效率
--2,练习
--算术运算符
package cn.tedu.basic;
//测试 算数运算符
public class Test4 {
public static void main(String[] args) {
//1, % -- 模,用来取余数
System.out.println(5%3);//2
System.out.println(10%2);//0
//2, 分别两位数的 个位 ,十位
int a = 25 ;
System.out.println(a % 10);// %是取余数-取个位数5
System.out.println(a / 10);// /是取商-取十位数2
//3, 分别三位数的 个位 ,十位,百位
int b = 256 ;
System.out.println(b % 10);//个位
System.out.println(b / 100);//百位
System.out.println(b / 10 % 10);//十位
//4, 自增++ 自减--
int x = 1;
//符号在后,先使用再变化
System.out.println(x++);//1
int y = 1;
//符号在前,先变化再使用
System.out.println(++y);//2
System.out.println(++x+y+y+++x);//10
//3 + 2+ 2 + 3
// System.out.println(++x+y+y++);//3+2+2=7
//TODO 自减
int m = 1;
//符号在后,先使用再变化
System.out.println(m--);//1
int n = 1;
//符号在前,先变化再使用
System.out.println(--n);//0
System.out.println(--n+n-m--);//-1+(-1)-0=-2
}
}
--三元运算符
package cn.tedu.basic;
import java.util.Scanner;
//测试 三元运算符
public class Test5 {
public static void main(String[] args) {
//1,比较两个数里的大值
System.out.println("请您输入两个数字");
int a = new Scanner(System.in).nextInt();
int b = new Scanner(System.in).nextInt();
//2,出结果
//定义变量max,记录大的值
//max记录的值,可能是a或者是b,具体是啥,看a>b成立不
//如果a>b成立,就把a交给max保存,否则就把b给max
int max = a > b ? a : b ;
System.out.println("两个数里的大值是: "+max);//10
//3,比较三个数里的大值
System.out.println("请您再输入一个数字");
int c = new Scanner(System.in).nextInt();
// int x = ?;//定义新变量,记录max和c里的大值
max = max > c ? max : c ;//修改max的值,现在记录max和c里的大值
System.out.println("三个数里的大值是: "+max);
// max = a > b ? a大 : b大 ;
// max = a > b ? a和c比 : b和c比 ;
max = a > b ? (a > c ? a : c) : (b > c ? b : c);
System.out.println("三个数里的大值是::::: "+max);
}
}
--平年闰年
package cn.tedu.basic;
//测试 平年 闰年
public class Test6 {
public static void main(String[] args) {
//1,定义变量,记录年号
int year = 1000 ;
//先假设是平年,如果满足了判断才是闰年
String x = "平年";
//2,判断,是平年还是闰年
// if(判断条件){ 满足了就干活 }
// if(判断条件1 || 判断条件2){ 满足了就干活 }
//if(能被4整除 && 不能被100整除 || 能被400整除){ 满足了就干活 }
if(year%4 == 0 && year%100 != 0 || year%400 == 0){
x = "闰年";//修改x的值
}
System.out.println(year+"年是"+x);
}
}