变量,常量,数据类型和运算符
变量
定义:
一个存储空间的表示,其值是可以变化的。(例如买了一双鞋,鞋盒用来孵小鸡,鞋盒就是变量,鞋子和小鸡是里面的值。)
使用步骤:
第一步:声明变量(声明变量的时候变量名不能重复)
即根据数据类型在内存申请空间
数据类型 变量名;int money;(int是数据类型,money是变量名)
第二步:赋值
即将数据存储在对应的内存空间
变量名=数值; money=1000;
上面两步可以合二为一
int money =1000; 其含义是:在内存中开辟了一个int类型的空间,给其命名为money,并为其赋值为1000;
第三步:使用
即取出数据
注意:
在声明变量的时候变量名不能重复
当在程序中使用“+”的时候,符号左右两侧如果有一个数据是字符串则将两个值拼接(如果后面有多个“+”则将多个值拼接),如果都是数值型则计算和
命名的规则:
1、以数字,字母,下划线和$符号组成,其中不能以数字开头
2、不能和java中的关键字重名
3、尽量遵守见名知意和驼峰命名(有多个单词首个单词首字母小写后面单词首字母大写)规则
public static void main(String[] args) {
// TODO Auto-generated method stub
//1声明
int money;
//2赋值
money=100;
/**
* 第一第二两步合并
* 声明变量的时候变量名不能重复
*/
int m = 100;
String name="张三";
int age =27;
double score=89.0;
//是否及格 使用 true : 及格 false:不及格
boolean flag =true;
//3使用
System.out.println("和"+age+score);
System.out.println("金额::"+money);
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
System.out.println("分数:"+score);
}
常量
定义:
一个存储空间的表示,其值是不可以发生变化的。
final修饰常量,final修饰的值在声明的时候就赋值且后面不能改变(在数据类型前加final 如 final int)
优点:
一旦定义后期不能修改,所以其是相对安全的
命名规则:
常量名都要大写,如果是多个单词组成,则使用下划线分割
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 常量的案列演示
* 计算圆的面积
*/
final double MY_PI =3.14;
/*pi=3;*/
double r=2;
double area=MY_PI * r * r;
System.out.println("面积是:"+area);
}
数据类型
分类:
一、基本数据类型:
1、数值型
1)整型(可以存放整数):
byte(1个字节) - - - >Byte
short(2个字节) - - - >Short
int(4个字节) (默认使用) - - - >Integer
long(8个字节) - - - >Long
2)浮点型(表示小数):
float(4个字节) - - - >Float
double(8个字节) (默认使用) - - - >Double
2、非数值型
1)字符型—————需要给值加上单引号,只能存一个字符
char(2个字节):本质上是一个整数,是字符的Unicode码值 - - - >Character
2)布尔型————结果只有两种 true/false
boolean - - - >Boolean
二、引用数据类型:
1)String:可以存储多个字符使用双引号引起来
2)数组
3)枚举
运算符
分类:
赋值运算符:
赋值符号:=
将右边的值赋给左边的变量
算术运算符:
符号:+ - * / % ++ –
++放在变量前指先加1在使用;放在变量后指先使用在加1
–放在变量前指先减1在使用;放在变量后指先使用在减1
%指求余数
num+=2;(意思为num=num+2;)
public static void main(String [] args){
//++ --
int a=4;
int b=2;
int c=5;
/*
System.out.println((a+b));
System.out.println((a-b));
System.out.println((a*b));
System.out.println((a/b));
System.out.println((a+b));
System.out.println((a+b));*/
System.out.println(a++);//输出结果为4
System.out.println(a);//输出结果为5
System.out.println(++a);//输出结果为6
System.out.println(c%b);//输出结果为1
}
关系运算符:
运算符 | 含义 | 举例 | 结果 |
---|---|---|---|
== | 等于 | 5==6 | false |
!= | 不等于 | 5!=6 | true |
> | 大于 | 5>6 | false |
< | 小于 | 5<6 | true |
>= | 大于等于 | 5>=6 | false |
<= | 小于等于 | 5<=6 | true |
注意:
= 为赋值运算符,== 等于运算符
表达式返还给我们的结果类型都是boolean 类型
逻辑运算符:
运算符 | 含义 | 运算规则 |
---|---|---|
&& | 短路与 | 两个表达式结果都是true结果才是true |
|| | 短路或 | 只要有一个为true 结果就为true |
! | 取反 | 将原来表达式结果取反 |
& | 无论A是否是真,它都会去判断B | |
| | 无论A是否是真,它都会去判断B |
A | B | A&&B | A||B |
---|---|---|---|
T | T | T | T |
T | F | F | T |
F | T | F | T |
F | F | F | F |
当 & 和 |作为二进制运算时
/*
&
运算规则:两个数都转为二进制,然后从高位开始比较,如果两个数都为1则为1,否则为0。 比如:129&128。
129转换成二进制就是10000001,128转换成二进制就是10000000。 从高位开始比较得到,得到10000000,即128
|
运算规则:两个数都转为二进制,然后从高位开始比较,两个数只要有一个为1则为1,否则就为0。 比如:129|128。
129转换成二进制就是10000001,128转换成二进制就是10000000。从高位开始比较得到,得到10000001,即129.
*/
&& 一假必假
|| 一真必真
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=4;
int b=2;
int c=5;
//a>b为T,b>c为F 所以a>b||b>c为T;a<c为T所以整个表达式为T
System.out.println(a>b || b>c && a<c);
}
三目运算符(条件运算符):
语法:
boolean表达式? 表达式1:表达式2;
当boolean表达式的结果为true的时候 执行表达式1
当boolean表达式的结果为false的时候 执行表达式2
int a=5;
int b=10;
int c= a>b? 0:1;
System.out.println(c);//结果为1
int a=5;
int b=10;
String c= a>b? "正确":"错误";
System.out.println(c);//结果为错误
返回值的数据类型需要和执行的表达式的数据类型一致
类型转换
自动类型转换
好比生活中有两个水杯,一个大的一个小的,如果将装满水的小杯中水倒入空的大杯,是可以的,类似于这样的场景在java中称之为自动类型转换
double first=81.99;
int duo=2;
double seconde=first+duo;
规则:
①在整个表达式中,如果有double数据类型的话,则整个表达式的结果会自动的提升为double类型
②在自动类型转换的表达式中数据类型需要兼容
如:都是数值型
③目标类型要大于原类型
强制类型转换
好比生活中有两个水杯,一个大的一个小的,如果将装满水的大杯中水倒入空的小杯,是可以的但是会溢出,类似于这样的场景在java中称之为自强制类型转换
语法:
数据类型 变量名=(数据类型)(表达式);————是先运算表达式,然后将结果转换
如:int second=(int) (first+duo);
或
int second=(int) (first)+(int)(duo);————先将first转换为int类型在计算,最后将结果转换为int类型
缺点:丢失精度,慎用(double转int 丢失的是小数点后面的所有值不是四舍五入)
double first=81.99;
int duo=2;
int second=(int) (first+duo);//结果是83
Scanner
作用:接收用户在键盘输入的值
使用步骤:
①导包
import java.util.Scanner; / import java.util.*; (java.util是包名 Scanner是类名,
如果用*则表示取java.util包下的所有类,两种方法都行)
②创建Scanner 对象
Scanner sc = new Scanner (System.in);
③使用 常用方法
接收int型 int age= sc.nextInt();
接收double型 double score=sc.nextDouble();
接收String类型 String name=sc.next();
注意
第二步中新建的Scanner中用的什么名(sc)第三步中就用什么名
由于工具的原因,在编写提示语的时候将ln去掉;如将System.out.println(“请输入年龄:”);的ln去掉即为System.out.print(“请输入年龄:”);
package cn.kgc.tx.ketang;
//1、导包
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//2、创建Scanner 对象
Scanner sc = new Scanner (System.in);
//3、使用
System.out.print("请输入年龄:");
int age=sc.nextInt();
System.out.print("请输入姓名:");
String name=sc.next();
System.out.print("请输入分数:");
double score=sc.nextDouble();
System.out.print("年龄是:"+age+",姓名是:"+name+",分数是:"+score);
}
}
包的使用
新建的包都使用小写字母组成,不能有中文或者特殊符号
新建的包使用公司域名去掉3w其他内容倒写,如 www.kgc.cn cn.kgc.公司定义
新建的每个类我们使用的每个单词的首字母大写
在每个类中都会有且只有一个 package+包的名字(且在代码的第一行)