变量和运算符
数据类型
- 常量:程序运行中固定不变的值,如π
- 常量的分类:1.字面量:直接给定的值,也叫直接量 2.使用final定义的变量
- 数据类型:
- 基本数据类型:
- 整数类型:byte,short,int,long
- 小数类型:float,double
- 字符类型:char
- 布尔类型: boolean
- 引用数据类型:数组,类,接口
- 基本数据类型:
- 二进制
- 二进制位:专门用于存储一个二进制位的,二进制只有两种状态,给定一个二进制位,可以存放0或者1两种状态.
- 一般情况下,计算机把8个二进制位作为一个字节,byte,一个字节.short两个字节,int四个字节,long八个字节-2147483648
//声明一个byte类型的常量[-128,127]
System.out.println(10);
//short[-32768,32767]
System.out.println(1000);
//int[-2147483648,2147483647]
System.out.println(40000);
//long 如果需要java把100以long类型存储,必须以L作为后缀
System.out.println(100L);
//float类型占4个字节,能存储的数据可以精确到6-7位,单精度
//需要精确到15-16位的话,要用double,双精度,八个字节
//声明小数默认用double,如果可以确定精度不超过6位,一定选好float类型,结尾要加f
System.out.println(3.14f);//float
System.out.println(3.14);//double
System.out.println(.35);//小数是0开头的话,0可以省略
//浮点数不能用于比较,特别是等于比较,可以进行大于小于比较
//对于高精度计算不能用float(金融行业,科学研究),一般不会选择浮点数.
//声明一个char类型的常量,字符类型必须用单引号引起来
System.out.println('A');
//字符型中的字符表示的是Unicode(万国码)编码表中的字符
//Boolean类型只有true和false两种形式
System.out.println(true);
System.out.println(false);
//把多个字符组合在一起,构成字符串,用双引号表示,属于引用数据类型
System.out.println("张二狗");
变量
- 在程序运行中,值可以发生变化的量
- 表示存储空间,可以用来存放某一类型的常量,没有固定值,可以重复使用
//声明一个变量:语法:数据类型 变量名[= 初始值];
//1.声明一个变量,在内存中开辟了四个字节的空间,空间的名字叫做age.
byte age;
//2.赋值,(变量没有默认值),变量必须赋值后才能使用
age = 10;
//3.使用变量
System.out.println(age);
//4.运行过程中,age的值是可以被改变的
age = 11;
System.out.println(age);
/*1.变量必须先声明后赋值再使用
2.变量是没有默认值的
*/
//声明变量的同时进行赋值
int coutn = 100;
System.out.println(count);
使用变量注意:
先声明再赋值后使用
在当前作用域
变量的命名规则和规范:
-
规则:
- 变量名可以包含字母,数字,下划线,$.其余的不行
- 数字不能开头
- 不能包含java关键字和保留字
-
规范:
- 满足命名规则
- 见名知意
- 统一使用驼峰命名法(首字母小写,后续单词首字母大写)
//声明一个用户名
String userName = "张三";
//声明一个班级人数
byte personCount = 110;
short personCount1 = 110;
int personCount2 = 110;
long personCount3 = 110L;
//声明一个学生分数
float studentScore = 90.0f;
double studentCount1 = 90.0;
//声明一个性别
char personGender = '男';
//声明标识表示登陆成功或失败
boolean isSuccess = true;
//需求:交换两个数的值
/*给定m=10,n=20
变成交换m和n的值,交换后
m=20,n=10
*/
int m = 10;
int n = 20;
int temp;
temp = m;
m = n;
n = temp;
System.out.println("m = " + m);
System.out.println("n = " + n);
int num1 = 10;
int num2 = 20;
//num1 + num2 + 30就是一个表达式
int result = num1 + num2 + 30;
System.out.println(result);
- 基本数据类型转换(boolean不参与转换,一般byte,short,char不参与转换)
- 类型转换
- 自动类型转换:隐式类型转换,范围小的直接转换成范围大的数据类型
- 强制类型转换:范围大的数据类型强制转换成范围小的数据类型
- 类型转换
//自动类型转换
int score = 90;
float score2 = score;
char letter = 'A';
int letter2 = letter;
//byte,short,char类型参与运算的时候,先自动转换为int类型
//表达式类型自动提升
byte num1 = 1;
short num2 = 2;
char letter3 = 'A';
int r1 = num1 + num2;
int r2 = letter3 + num1;
//表达式最终运行结果以表达式中最大范围的类型为最终类型
double count = 50.0;
int num3 = 1;
double r3 = count + num3 + 100L + 3.14f;
//强制类型转化:语法:范围小的数据类型 变量 = (范围小的数据类型)
int num1 = 10;
float num2 = 10.2f;
int r = (int) (num1 + num2);
//强制类型转换对于浮点数来说会出现精度丢失
//强制类型转换过程中,不能超过目标类型的范围,否则会出现信息丢失
int num3 = 300;
byte r2 = (byte) num3;
System.out.println(r2);
运算符
-
算术运算符
-
加 减 乘 除
-
+两边的表达式都是数值,结果就是数值,如果两边的表达式有一个为字符串,+ 起到连接字符串的作用.
-
除:0不能作为除数;在java中/是整除,如5/2=2,如果两边都是整形,结果就是整形,有一边为小数,结果就是小数;
-
% 取余数(取模)4
-
//47天中有多少周多少天 int days = 47; int week = days / 7; int day = day % 7; System.out.println("有" + week +"周" + day + "天") //需求:7856s换成时分秒 int times = 7865; int hour = times / 3600; int m = times % 3600 / 60; int s = times % 60; System.out.println(times + "秒是" + hour + "时" + m + "分" + s +"秒");
-
自增:i++先参与运算,再自加1,++i先自加1,再参与运算
-
自减:i–先参与运算,再自减1,–i先自减1,再参与运算
-
int i = 10; int j = i++ + i++; //i自增两次为12 //j为21
-
-
赋值运算符
-
变量 = 表达式的值或者常量值
-
//赋值运算符 int a = 10; //+=自增10 int b = 0; b += 10;//b = b + 10; System.out.println(b); //*= 倍增\ int c = 2 ; c *= 2; System.out.println("c = " + c); //注意事项:+=内部已经完成了自动类型转换 byte d = 10; d += 1;//d = (byte)(d + 1) System.out.println("d = " + d); //需求:给定一个字母,转换成大写字母 char e = 'a'; e -= 32;//e = (char)(e - 32); System.out.println(e);
-
-
比较运算符
- 也叫关系运算符:用于比较变量或常量,表达式之间的大小关系,结果为boolean类型
-
逻辑运算符
-
用来连接两个boolean表达式
-
boolean result = boolean表达式A 逻辑运算符 boolean表达式B
-
/*& 与运算,理解为"并,并且" true & true = true; true & false = false; false & true = false; false & false = false; 只要有一个为false,结果就是false && 短路与,符合与运算的规则,左边表达式为false,不会运行右边的 | 或运算,理解为"或,或者" true | true = true; true | false = true; false | true = true; false | false = false; 只要有true,结果就是true; ! 非运算,理解为"取反" !true = false; !false = true; */
-
-
三元运算符
-
表示有三个元素参与的表达式,又叫做三目运算符.
-
数据类型 变量 = boolean表达式? 结果A : 结果B;
-
int a = 10; String str = a > 5 ? "a大于5" : "a小于或等于5"; System.out.println(str); //求两个数的最大值 int m = 10 ; int n = 20; int max = m >= n ? m : n; System.out.println(max); //给定一个数,判断是否是偶数 int b = 99; String str1 = b % 2 == 0 ? "偶数" : "奇数"; System.out.println(str); //55条数据,每页10条,分多少页 int dateCount = 55; int pageSize = 10; int page = dateCount % pageSize == 0 ? dateCount / pageSize : dateCount / pageSize + 1; System.out.println(page);
-