一:数据类型
Java程序就是对数据的操作。Java中数据类型的划分如下图:
1、基本数据类型
-
数值型:整数型:byte、short、int、long 小数型:float、double
-
字符型:char
-
布尔型:boolean 真和假 true/false
-
数值型:在内存中占的大小
byte占一个字节(在内存中占8位) | 取值范围:-128----127 |
---|---|
short占两个字节(在内存中占16位) | 取值范围:-32768----32767 |
int占4个字节(在内存中占32位) | 取值范围:-2147483648----2147483647 |
long占8个字节(在内存中占64位) | 取值范围:-9223372036854775808----9223372036854775807 |
注:在这四个整数类型中,int类型是默认的整数数值类型
float型为单精度浮点型 | 在内存中占了4个字节(32位) |
---|---|
double型为双精度浮点型 | 在内存中占了8个字节(64位) |
注:double位默认类型
-
字符型
在Java中字符型表示单个字符,且必须使用单引号(’’)将其括起来。Java采用的16bit的Unicode 编码作为字符型的编码方式 eg:\uXXXX -
布尔型:boolean 真或者假
2、引用数据类型
- 类
- 接口
- 数组
二:Java变量和常量
1.作用:用来在程序运行期间保存数据的容器 临时存储
变量:在程序运行期间可以改变的量
常量:在程序运行期间不可提改变的量
2.创建和声明
- 语法
变量:数据类型 变量名;
常量:final 数据类型 常量名; - 声明的方式
先声明再赋值
声明时赋值 - 变量的使用:使用输出语句,调用变量名;使用变量,可以重复来使用一个数据。方便 数据的维护和修改。
3、Java代码中的注释
- 注释在代码执行时不起作用,注释是写给自己和别人看的
- 单行注释://
- 多行注释:/* */
- doc文档注释: /** */可以生成自己的api 文档
4、数据类型转换问题
java 数据类型,按照数据类型大小来排列
byte—short,char—int—long—float—double
- 自动类型转化:小类型变量赋值给大类型变量
- 强制类型转化:大类型变量赋值给小类型变量
- 对于Java来说都是强制转换
三、获取键盘输入 Scanner
四:运算符
综合小练习
题目:根据你输入的四位数的卡号,获取会员卡号各个位上的数字之和,如果等于6 ,则表示中奖
public class 抽奖系统 {
public static void main(String[] args) {
//Scanner 文本扫描器
Scanner input=new Scanner(System.in);
//获取键盘输入的四位数字
System.out.println("输入一个四位数字 ");
int card =input.nextInt();
System.out.println("四位数字是:"+card);
//将四位卡号 各个为数字相加
/*
* 1、获取每一位上的数字
* 2、相加
*/
int ge,shi,bai,qian,sum;
ge=card%10;//取个位
shi=card/10%10;
bai=card/100%10;
qian=card/1000;
System.out.println(ge);
System.out.println(shi);
System.out.println(bai);
System.out.println(qian);
sum=(ge+shi+bai+qian);//将各个为数字相加 赋值给sum变量
System.out.println("数字之和是"+sum);
//判断相加数字之后是不是6
//使用三目运算符
String mess= (sum==6?"中将":"下次再来");
//输出中奖结果
System.out.println(mess);
}
}
1、算数运算符:+、-、*、/、++、–
1.1对数值型的进行操作(与数学基本类似)
+ | 表示数字相加 |
---|---|
- | 第一表示减法运算,第二表示一个负数 |
* | 与数学运算一样 |
/ | 除数,除数不能为0,不考虑余数 |
% | 取余数 |
注意事项:
- 等类型相加,小于int类型的变量在运算之后,记得必须强制转换
不同类型的数值运算:不同类型相加,在运算的时候自动将小类型数 据转为大类型数据
自动转换和强制转换的问题 - 程序在运行时出现的错误叫做运行时异常,在运行时报错,当前代码
之后的代码将不再运行,此时java程序运行时自上而下一次运行, - 除数为double的0.0结果为正无穷大,除数为-0.0结果为-0.0
- 在类型转换的时候,小数强制转换为整数,会损失精度
1.2:对其他类型的操作
-
char:char类型与数字运算,将自动转为int
-
String=多个char, +运算为拼接
注意事项: -
只要遇到char,任意类型的变量都会转为字符串,然后进行拼接
-
字符串不能被强制转换为基本数据类型
public static void main(String[] args) {
//创建字符和字符串变量
char c='香';
char c01=97;
int i=(c+10);
int i01='中';//char ---->int
System.out.println(i01);
//可以将值直接赋值给变量 也可以将变量与值运算的结果赋值给变量
// 类型大小 类型转换 自 强
System.out.println(i);
System.out.println(c01);
System.out.println("=========字符串 拼接 =========");
/*
* 只要遇到字符串 任意类型的变量 都会转为字符串然后进行拼接
*/
int num01=100;
int num02=200;
String str="javaJ2021";
//字符串不能直接被强制转换为基本数据类型
String count=num01+str;
System.out.println(count);
System.out.println(num01+num02+str);
System.out.println(num01+str+(num02+num01));
}
2.赋值运算符
运算符 | 运算规则 |
---|---|
= | 赋值 |
+= | 加后赋值 |
-= | 减后赋值 |
*= | 乘后赋值 |
/= | 整除后赋值 |
%= | 取余后赋值 |
3、关系运算符(比较运算符)
运算符 | 运算规则 |
---|---|
== | 相等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
注意事项:
- 可以进行基本数据类型和引用数据类型的比较
基本数据类型:比较的是具体的值
引用数据类型:比较的是地址值 - 关系运算符的结果是boolean类的
- 运算符两边可以是数值、变量(基本数据类)、表达式、数值比较、boolean、字符、字符串
public class RelationOperator {
public static void main(String[] args) {
//声明变量
int num01=10;
int num02=20;
int num03=10;
System.out.println("=======数值比较 ======");
System.out.println("==比较"+(num01==num02));
System.out.println("==比较"+(num01!=num02));
System.out.println("==比较"+(num01>num02));
System.out.println("==比较"+(num01<num02));
System.out.println("==比较"+(num01<=num02));
System.out.println("==比较"+(num01>=num02));
System.out.println("==比较"+(10==10));
boolean num01=true;
boolean num02=false;
System.out.println("=======boolean比较 ======");
System.out.println("==比较"+(num01==num02));
System.out.println("==比较"+(num01!=num02));
//boolean类型不能进行大于小于的比较
System.out.println("==比较"+(num01>num02));
System.out.println("==比较"+(num01<num02));
System.out.println("==比较"+(num01<=num02));
System.out.println("==比较"+(num01>=num02));
char num01='a';
char num02='b';
System.out.println("=======字符比较 ======");
System.out.println("==比较"+(num01==num02));
System.out.println("==比较"+(num01!=num02));
System.out.println("==比较"+(num01>num02));
System.out.println("==比较"+(num01<num02));
String num01="hello";
String num02="hello";
System.out.println("=======字符比较 ======");
System.out.println("==比较"+(num01==num02));
System.out.println("==比较"+(num01!=num02));
int num01=10;
int num02=20;
System.out.println("=======表达式比较 true false======");
System.out.println("==比较"+(true==true));
System.out.println("!=比较"+(false!=true));
//关系运算符的嵌套使用
System.out.println("表达式比较 ===="+((num01==num02)==(num01!=num02)));
}
}
4、逻辑运算符
运算符 | 运算规则 |
---|---|
& | 与 |
^ | 异或 |
! | 非 |
&& | 短路与 |
注意事项:
-
表达式的判断:可以做true和false
-
普通的: & | ^
短路版的:&& || ! -
与 &:左右两边都为true结果才为true 一个为假就是假
或 || | :左右两边都为false,结果为false,一个为真就为真
非 ! ^:最终结果取反, -
重点!!!!!!!!短路与非短路的区别
短路 && 左边为真 右边继续判断 左边为false 右边就不管 && || 只要运算符的左边能够确定该运算符的最终结果 右边就不会执行;
& | 运算符的左右两边都需要执行;
public static void main(String[] args) {
int num01=10;
int num02=20;
boolean bool01=true;
boolean bool02=true;
boolean bool03=false;
System.out.println("==============非短路 ===================");
System.out.println("&========"+(bool01&bool02));
System.out.println("&========"+(bool01&bool03));
System.out.println("^========"+(true^true));
System.out.println("|========"+(false|false));
System.out.println("==============短路 ===================");
System.out.println("&&========"+((num01==num02)&&(num01>num02)));
System.out.println("&&========"+((num01!=num02)&&(num01<num02)));
System.out.println("||========"+((num01!=num02)||(num01<num02)));
System.out.println("||========"+((num01==num02)||(num01>num02)));
//! 在最后取反 ! 直接对Boolean
System.out.println("!========"+(!(num01>num02)));
System.out.println("!========"+(!bool01));
}
结果如下:
5、三元运算符:根据判断条件返回不同的结果
语法:表达式 ? value01 : value2
使用语法:变量 =(表达式 ? value1 : value2)
根据表达式的结果,如果表达式的结果为true,返回value1,表达式的结果为false,则返回value2
返回值可以直接输出,或者使用变量来保存,用来接收返回值的变量必须与value1 和value2为同一数据类型
具体使用如下代码:
public class ThreeOperator {
public static void main(String[] args) {
/*
* 根据考试成绩来评定等级
* 分数 大于等于60 为及格 60一下不包含60 为不及格 80以上不含80 为优秀
*/
int grande=98;
//变量= ( 表达式 ? value01 : value02);
System.out.println(grande>=60 ? "及格" : "不及格");
String mess=(grande>=60 ? "及格" : "不及格");
System.out.println(mess);
//嵌套
String mess2=(grande>=60 ? (grande>80 ? "优秀" : "及格") : "不及格");
System.out.println(mess2);
}
}
6、位运算符<< >>
越来越小:>>
越来越大:<<
正整数:按位进行运算,将Java的数值型的数据,转为2进制后,进行移位用0补位