一.数据类型
Java程序就是对数据的操作,CRUD
1.Java语言中的数据都有哪些?
a.基本数据类型
8个 三类
数值型 : 整数型 byte short int long 小数型 float double
字符型:char
布尔型: boolean 真和假 true、 false
数值型: 在内存中占的大小
字符型
在java中字符型表示单个字符,且必须使用单引号(‘’)将其括起来。java采用的16bit的Unicode编码级作为字符型的编码方式 \uXXXX \u9999
布尔型:boolean
String 字符串类类型
b.引用数据类型:类 接口 数组
二.java变量和常量
2.1 作用: 用来在程序运行期间保存数据的容器。临时存储
变量 在程序运行期间可以改变的量
常量: 在程序运行期间不可以改变的量
2.2 创建 声明
语法:
变量:数据类型 变量名;int x;
常量: final 数据类型 常量名final double y;
声明变量和常量的方式 :
先声明在赋值 double x; x=11.5;
声明时赋值 int i=100;
变量的使用 使用输出语句 调用变量名
System.out.println(float01);换行
System.out.print(float01);不换行
//声明并赋值
int i=110;
//浮点型
float x=11.5;
double y=25.5;
//布尔类型
boolean=true;
//输出语句
Systen.out.println(y);
2.3 java代码中的注释
注释在代码执行时不作用 ,注释是写给自己和别人看
//单行注释
/* / 多行注释
doc文档注释 /*
*/ 可以生成自己的api文档 字典
2.4 数据类型转换问题
Java数据类型 按照数据存储大小来排列
Byte, short, char ——int ——long——float——double
自动类型转换 小类型变量赋值给大类型变量
强制类型转换 大类型变量赋值给小类型变量
其实对于java而言全都是强制转换
三.获取键盘输入 Scanner
//创建一个打印机
Scanner input = new Scanner(System.in);
System.out.println("请输入你要打印的内容:");
String sr=input.next();//接收输入的字符串
//输出打印的内容
System.out.println("输入的信息是"+sr);
四.运算符
4.1 算数运算符
- 在java程序中使用数学运算符 主要是对数值型的数据进行操作
±*/ %
++ – 自加和自减 1 运算符在前和在后
int i=100 ;
i++先赋值在自加
++i先自加在赋值
综合小练习 :
根据你输入的会员卡号 4位数 1234
获取会员卡号的各个为上的数字之后 如果等于6 就表示中奖
(1) 对数值型操作: 与数学基本类似, + 数字相加 (数字有byte short int long float double)
-(减号作用) 第一减法运算 二 表示一个负数
等类型相加:小于int类型的变量在运算之后(记得必须强制转换)
不同类型的数值运算: 不同类型的数据相加,在运算的时候自动将小类型转为大类型数据
Byte +int =====int(long、float、double) 自动转换
(转换)(short +int) = byte short 强制转换
(* / % ) 与数学运算一样 除数不能为0
/ 除数 10/3 =3 不考虑余数
% 取余数 10%3=1
int i=45;
int j=50;
//减法运算
int s=i-j;
System.out.println(s);
//负号表示负数
double y=-21;
System.out.println(y);
byte byte01=50;
byte byte02=80;
//byte sum=(byte01+byte02);超出范围
byte sum=(byte)(byte01+byte02);
System.out.println(sum);
System.out.println(byte01+byte02);//运算时会自动转成int类型
//整数除/取余整数
int int01=15;
int int02=3;
System.out.println(int01/int02);
System.out.println(int01%int02);
//整数除/取余小数
int int03=90;
double int04=30;
System.out.println(int03/int04);
System.out.println(int04%int03);
int num=0;
//除数为int的0
System.out.println(10/num);
System.out.println("serendipity");
//除数为double的0.0 结果为正无穷大 Infinity 除数为-0.0 结果为负无穷大 -Infinity
double num6=0.0;
System.out.println(10/-num6);
System.out.println("serendipity");
注意在类型转换时:小数强制转为整数 损失精度
10.123456 ----->int 10
(2)其他类型操作(字符型):
char 与数字运算
char 类型与数字运算 将char转为int
String=多个char + 运算为拼接
4.2 赋值运算符
=赋值运算与算数运算符的结合使用
语法 := 将运算符右边的值赋值给左边的变量
+= -= *= /= %=
int num=1 ; num=num+1; === num+=1
4.3 关系运算符 比较运算符
可以进行基本数据类型和引用数据类型的比较
基本数据类型 比较的都是具体的值
引用数据类型 比较的是值(地址值)
关系运算符 的结果是boolean类(true false)
运算符左右两边可以是数值、变量(基本数据类)、表达式
(结果是boolean值的运算)
数值比较 、boolean、字符、字符串
//声明变量
int num1=60;
int num2=50;
System.out.println(num1==num2);
System.out.println(num1>num2);
System.out.println(num1<=num2);
System.out.println(10==10);
//boolean类型比较
boolean num3=true;
boolean num4=false;
System.out.println(num3==num3);
System.out.println(num4!=num4);
//char类型比较
char num5='a';
char num6='b';
System.out.println(num5==num5);
System.out.println(num6!=num6);
System.out.println(num5>=num6);
System.out.println(num5<num6);
//String类型比较
String num7="serendipity";
String num8="serendipity";
System.out.println(num7==num8);
System.out.println(num7!=num8);
boolean类型不能进行大于小于的比较
算数、赋值 得到的是数值
关系运算符得到的是boolean结果
4.4 逻辑运算符
表达式的判断 也可以做true和false
普通的 & | ^ 左右两边都要运算
短路板 && || ! && 左边如果为false 右边不算 || 左边为true 右边就不管(1为真 0 为假)
与 & 左右两边都为true结果为true 一个为假就是假
|| | 左右两边都为false 结果为false 一个为真就是真
! ^ 最终结果取反 true----false
public static void main(String[] args) {
int num01=10;
int num02=20;
boolean bool1=true;
boolean bool2=false;
boolean bool3=true;
// 非短路
System.out.println(bool01&bool02);//flase
System.out.println(bool01&bool03);//true
System.out.println(false|false);//flase
// 短路
System.out.println((num01==num02)&&(num01>num02));//flase
System.out.println((num01!=num02)&&(num01<num02));//true
System.out.println((num01!=num02)||(num01<num02));//true
// 在最后取反 ! 直接对Boolean
System.out.println(!(num01>num02));//true
System.out.println((!bool01));//flase
非短路与短路区别
短路 && ( 左边为真,右边继续判断;左边为false ,右边就不管 )
&& || 只要运算符的左边能够确定该运算符的最终结果 右边就不会执行
& | 运算符的左右两边都需要执行
int num9=35;
int num10=33;
System.out.println("逻辑运算前的值"+num9);//35
System.out.println((num9>100)&(50>(num10+=100)));//false
System.out.println((num9<100)&&(50>(num10+=100)));//false
System.out.println("逻辑运算后的值"+num9);//35
4.5 三元运算符
根据判断条件返回不同结果
语法: 表达式 ? value01 :value02;
使用语法: 变量= ( 表达式 ? value01 : value02);
执行: 根据表达式的结果,如果表达式 的结果为true 返回value01 表达式结果为false返回value02。
返回值可以直接输出 或者使用变量来保存。 用来接收返回值的变量必须与value01,value02
public static void main(String[] args)
/*
* 根据考试成绩来评定等级
* 分数大于等于60 为及格 60以下不包含60 为不及格 80以上不含80 为良好 90以上不含90 为优秀
*/
Scanner input = new Scanner(System.in);
System.out.println("请输入成绩:");
double grade=input.nextDouble();
//变量= ( 表达式 ? value01 : value02);
//嵌套
String mess=(grade>=60 ? (grade>80 ? (grade>90 ? "优秀":"良好") : "及格") : "不及格");
System.out.println(mess);
4.6 位运算符
正整数
按位进行移动运算,将Java的数值型的数据 转为2进制之后 进行移位用0 补位
(>>) 越来越小 (<<)越来越 大