一、变量
1.1 什么是变量?
变量:表示数据在内存中内存地址,变量对应的数据是可以改变的。
1.2 如何使用变量?
a:申明变量(申请内存地址)
数据类型 变量名;int a;
b:变量的初始化(变量赋值)
变量名 = 值;a = 10 ;
c:使用变量
System.out.printal(a);
public class test01{
public static void main(String[] args){
/*
//方式1:
//1、申明变量
int a;
//2、变量赋值
a = 10;
//3、使用变量
System.out.println(a);
*/
/*
//方式2:
//1、申明变量和变量初始化
int a = 10;
//2、使用变量
System.out.println("a的值为:"+a);
*/
//方式3:
//连续定义多个变量 int a; int b; int c = 10;
int a,b,c = 10;
System.out.println("c的值为:"+c);
//注意:在java中变量一定要初始化才能使用
}
}
1.3 变量的命名规范
a、只能是数字、字母、下划线、美元$符号组成
b、不能使用数字开头
c、不能使用Java中的关键字和保留字
d、使用驼峰命名法(两个单词以上组成变量)
小驼峰:addService 变量名、方法名
大驼峰:HelloWord 类名、接口
e、见名知意
f、Java中区分大小写
Java中关键字和保留字
二、数据类型
2.1基本数据类型
2.1.1整数类型
类型 | 所占字节 | 所占位数 | 取值范围 |
---|---|---|---|
byte | 1字节 | 8位 | -2^7 ~ 2^7-1 |
short | 2字节 | 16 | -2^15 ~2^15-1 |
int | 4字节 | 32 | -2^31 ~ 2^31-1 |
long | 8字节 | 64 | -2^63 ~ 2^63-1 |
2.1.2浮点类型
类型 | 所占字节 | 所占位数 | 取值范围 | 有效数位 |
---|---|---|---|---|
float | 4字节 | 32位 | ±3.4E+38 | 7位 |
double | 8字节 | 64位 | ±1.7E+308 | 16位 |
2.1.3布尔类型
类型 | 所占字节 | 所占位数 | 取值范围 |
---|---|---|---|
boolean | 1字节 | 8位 | true\false |
2.1.4 字符类型
类型 | 所占字节 | 所占位数 | 取值范围 |
---|---|---|---|
boolean | 1字节 | 8位 | true\false |
代码演示
public class Demo02{
public static void main(String[] args){
/*
基本数据类型
整数类型
byte short int long
浮点类型
float double
布尔类型
boolean
字符类型
char
引用数据类型
String、类、接口、数组
*/
//定义byte类型的变量
byte b = 10;
System.out.println(b);
// byte b1 = 128; 错误
// System.out.println(b1);
//定义short类型的变量
short s = 128;
System.out.println(s);
//定义int类型的变量
int i = 1000;
System.out.println(i);
//定义int类型的变量
long l = 364748123123L;
System.out.println(l);
//定义float类型的变量
float f = 10.2F;
System.out.println(f);
float f1 = 9999.9994f;
System.out.println(f1);
//定义double类型的变量
double d = 10d;
System.out.println(d);
double d1 = 12345678910111213.0;
System.out.println(d1);
//boolean类型 真假(一般用条件判断) true false
boolean boo = false;
System.out.println(boo);
//char类型
/*
字符:各个国家的文化符号
字符集:收录了各个国家的字符形成的集合 Unicode万国码
字符编码:ASCII(美国标准信息交换码)、UTF-8
在java字符和字符串是不同的数据类型
字符必须使用''表示,字符串必须要使用""
字符可以有三种表示形式:
1、字符 'a' '中'
2、数字 97 20
3、十六进制 '\u0041' 100 0001 = 65
*/
char c1 = '中';
char c2 = 20013;
char c3 = '\u0041';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
}
}
2.1.5 数据类型细节
a、long类型数据需要在最后添加L;
b、float类型数据需要在会后添加F;
c、字符必须使用' ' 表示,字符串必须使用" "表示
2.1.6 转义字符
转义字符:转变字符原有含义
常见的转义字符:\n 表示换行 \t 表示制表位 \u 表示十六进制
转义字符
注意:在Java代码注释中不能出现 \
public class Demo03{
public static void main(String[] args){
//常见转义字符:\n 表示换行 \t表示制表位 \u 表示十六进制
System.out.println("hello\tworld");
System.out.println("hello\nworld");
//转义字符
System.out.println("你\"真棒\"");
//转义字符 斜杠不能单独使用
System.out.println("D:\\a\\b");
}
}
2.2引用数据类型
String表示引用数据类型
在Java中一切用" " 包裹起来的类型都是String类型
public class test02{
public static void main(String[] args){
//String是引用数据类型 类!
//在Java中一切用 ""包裹起来的类型都是String类型
String name = "ccq";
String hobby = "打羽毛球";
String job = "java开发";
System.out.println("姓名为:"+name+"\n爱好为:"+hobby+"\n职业为:"+job);
}
}
三、数据类型转换
3.1 为什么要进行数据类型转换
在Java中要求等号左边和等号右边的类型要一致。如果出现不一致,就需要进行数据类型转换。
3.2 自动类型转换
在数据类型兼容的情况下,小转大就是自动类型转换
自动类型转换也称之为隐式类型转换,即不需要做任何操作
public class test03{
public static void main(String[] args){
//自动类型转换
byte b = 10;
//i的类型为int b的类型为byte
int i = b;
System.out.println(i);
int num1 = 100 ;
double num2 = num1;
System.out.println(num2);
//char类型的自动类型转换
char c1 = 'a';
int c2 = c1;
System.out.println(c2);
}
}
3.3 强制类型转换
在数据类型兼容的情况下,大转小就是强制类型转换
自动类型转换也称为显示类型转换,需要添加对应语法
语法:(转换类型)变量
public class Demo05{
public static void main(String[] args){
//强制类型转换
double n1 = 100;
//n1的类型为double n2的类型为int
int n2 = (int)n1;
System.out.println(n2);
int c3 = 97;
char c4 = (char)c3;
System.out.println(c4);
//对表达式进行类型转换
double d1 = 10;
double d2 = 12;
int d3 = (int)(d1 + d2);
System.out.println(d3);
}
}
3.4 数类型转换注意点
-
1、boolean不能参与任何数据类型转换
-
2、基本类型中范围(大小) byte short|char int long float double
-
3、强制类型转换可能会造成数据丢失
-
4、数据类型提升
-
表达式中有double,结果double
-
有float,结果float
-
有long,结果long
-
有int,结果int
-
有char、byte、short,结果为int
-
-
5、在Java中,任何一个整数默认都当做是int类型。在Java中,任何一个小数默认都是double类型
public class Demo05{
public static void main(String[] args){
/*
数据类型转换的注意点:
1、boolean不能参与任何数据类型转换
2、基本类型中范围(大小) byte short|char int long float double
3、强制类型转换可能会造成数据丢失
4、数据类型提升
表达式中有double,结果double
有float,结果float
有long,结果long
有int,结果int
有char、byte、short,结果为int
5、在java中,任何一个整数默认都当做是int类型,
在java中,任何一个小数默认都是double类型
*/
int m1 = 129; //0000 0000 0000 0000 0000 0000 1000 0001
byte m2 = (byte)m1;
System.out.println(m2);
double m3 = 10.2;
int m4 = (int)m3;
System.out.println(m4);
short s1 = 1;
short s2 = 1;
//short s3 = s1 + s2; 错误
//System.out.println(s3);
char x1 = 'a';
System.out.println(x1+1);
}
}
四、运算符
4.1 算术运算符
+ - * / % ++ -- |
public class Demo06{
public static void main(String[] args){
//算术运算符
/*
问题1:
+号在java中有两个作用:1、字符串的拼接 2、加法运算
字符串拼接的时候,任何类型与字符串拼接最终的结果是字符串类型
问题2:
/和%可以求得数字上的各个数位
问题3:
++表示自身+1
--表示自身-1
++在前,先加+1再使用
++在后,先使用再加+1
*/
int a = 10;
int b = 20;
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("hello"+1+2); //hello12
System.out.println(1+2+"hello"); //3hello
System.out.println(1+2+"hello"+3+4);//3hello34
int c = 34;
//获取c这个数据中的十位
System.out.println(c/10);
//获取c这个数据中的个位
System.out.println(c%10);
int d = 10;
d++; //d = d + 1;
System.out.println(d); //11
++d;
System.out.println(d); //12
System.out.println(d++); //12 13
System.out.println(++d); //14
//int x = 10, int y = 8; x++ - --x + y-- + x++ - --y = ?
int x = 10; int y = 8;
System.out.println(x++ - --x + y-- + x++ - --y);
/*
x=11 y=6
x++ - --x + y-- + x++ - --y
10 - 10 + 8 + 10 - 6
*/
}
}
4.2 赋值运算符
= += -= *= /= %= |
public class Demo07{
public static void main(String[] args){
//赋值运算符
int a = 10;
a += 2; //相当于 a=a+2;
a -= 3; //a = a - 3;
a *= 4; //a = a * 4;
a /= 5; //a = a / 5;
a %= 6; //a = a % 6;
//笔试题:short s1 = 1; short s2 = 1; s2 = s1 + s2? s2 += s1;?
short s1 = 1;
short s2 = 1;
// s2 = s1 + s2; //错误
s2 += s1; //正确
System.out.println(s2);
}
}
4.3 关系运算符
> < >= <= != == |
public class Demo08{
public static void main(String[] args){
//关系运算符 结果:boolean类型
int a = 10;
int b = 20;
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);
//整除条件
//偶数条件: a % 2 == 0
//奇数条件: a % 2 != 0
}
}
4.4 逻辑运算符
&& || ! |
public class Demo09{
public static void main(String[] args){
//逻辑运算符 结果:boolean类型
/*
&&:所有的结果为true,最终结果才是true
短路与:只要有一个结果为false,就不会执行后面的表达式
||:所有的结果只要有一个为true,最终结果就是true
短路或:只要有一个结果为true,就不会执行后面的表达式
!: 对结果进行取反
&: 无论结果如何都会执行完整个表达式
|: 无论结果如何都会执行完整个表达式
*/
int a = 17;
//问a是否是一个偶数且大于10
//boolean bool = a % 2 == 0 && a > 10;
System.out.println(a % 2 == 0 && a > 10);
System.out.println(a % 2 == 0 & a > 10);
//问a是否是一个奇数数或小于15
System.out.println(a % 2 != 0 || a < 15);
System.out.println(a % 2 != 0 | a < 15);
//问:a是否是一个奇数
System.out.println(!(a % 2 == 0));
//&的用法
int b = 10;
int c = 12;
boolean bool2 = b++ > c-- & b-- == 10;
System.out.println(b);
}
}
4.5 三目运算
boolean类型表达式 ? 结果1 : 结果2; |
public class Demo10{
public static void main(String[] args){
//三目运算符
/*
boolean类型表达式 ? 结果1 : 结果2;
*/
//判断年龄如果大于18岁,输出成年人,否则输出未成年人
int age = 70;
String s = age > 18 ? "成年人" : "未成年人";
System.out.println(s);
//a和b 输出较大的那个数字
int a = 10;
int b = 20;
int num = a > b ? a : b;
System.out.println(num);
//三目运算符嵌套使用
//判断年龄如果大于18岁,输出成年人,但是如果大于60岁,输出老年人,否则输出未成年人
String s1 = age > 18 ? age > 60 ? "老年人": "成年人" : "未成年人";
System.out.println(s1);
}
}