Java基础-数据类型及变量
MrLiu666 人气:0Java基本语法
1.标识符(zhi)
含义:名字
类名、对象名、方法名、变量名、常量名……
一个合法的标识符的组成:数字、字母、_和$
注意事项:
- 不能重复
- 不能以数字开头
- 区分大小写
- 不能以关键字和保留字作为标识符
关键字:该词汇在Java中已经定义了含义
保留字:该词汇在Java中还没有定义含义,但是以后可能会用,先保留起来 goto
1.1命名规范
类名:
如果是一个单词,那么首字母大写
如果是组合词,那么每个单词首字母大写
变量名:
如果是一个单词,那么全部小写
如果是组合词,那么从第二个单词开始首字母大写
常量名:
如果是一个单词,那么全部大写 USER
如果是一个组合词,那么全部大写,单词之间用_隔开 USER_NAME
2.容器
2.1变量
在程序运行期间,该变量中的数据可以发生改变
2.2常量
在程序运行期间,该容器中的数据不能发生改变(必须和final进行配合使用)
注意:
- 容器的类型确定了数据的类型
- 容器的大小确定了数据的大小
2.3声明变量
语法:
数据类型 变量名;
2.4变量内存图
2.5给变量赋值
语法:
变量名=数据;
2.6获取变量值
语法:
通过 变量名 获取
3.数据类型
3.1原始类型(基本数据类型)
3.2整数类型
字节型 byte 1字节=8bit -128到127
在二进制中最小的八位:10000000 -128
在二进制中最大的八位:01111111 127
在二进制中正负区分:
- 如果最高位是0,表示该数据是正数
- 如果最高位是1,表示该数据是负数
短整型 short 2字节
整型 int 4字节
长整型 long 8字节
特殊:
如果给long类型的变量赋值,没有在数据后面加上l或L,那么jvm虚拟机会把该变量看成是int类型
在整数类型中默认类型是int类型
注意事项:
- 必须是数字
- 必须是整数
3.3浮点类型
单精度 float 4字节
特殊:
如果给float类型的变量赋小数值,没有在数据后面加上f或F,那么jvm虚拟机会把该数据看成是double类型的数据
因为在浮点类型中默认的是double类型
双精度 double 8字节
注意事项:
- 必须是数字
- 可以是整数可以是小数
- 获取的数据必定是小数
3.4字符类型
字符型 char 2字节
特殊:
如果给char类型的变量赋整数值,而且没有放到单引号中,返回的结果是一个字符
因为jvm虚拟机会拿着该数据到ASCII码表中找十进制对应的字符
注意事项:
- 可以存储任意类型
- 必须是单个
- 必须放到单引号中
3.5布尔类型
布尔型 boolean 1字节
注意事项:
- 该类型的数据不能随意赋值
- 该类型的数据只有两个:true、false
3.6引用类型
数组、对象、接口
4.ASCII
5.变量简写方式
5.1方式一
语法:
数据类型 变量名=数据;
声明变量时直接初始化值
5.2方式二
语法:
数据类型 变量名1,变量名2,变量名3……
声明变量时可以同时声明多个相同类型的变量
5.3方式三
语法:
数据类型 变量名1=数据,变量名2,变量名3=数据……
声明变量时可以同时声明多个相同类型的变量,并且初始化值
6.类型转换
含义:转换的数据的数据类型
6.1自动类型转换
隐式转换
含义:小容器中的数据自动转给大容器
比较数据类型大小:
- 如果是同一个数据类型,那么根据字节来比较
- 如果是不同数据类型,那么根据计算机给定的方式来比较
同一个数据类型大小:
整数类型:byte<<<short<<<int<<<long
浮点类型:float<<<double
字符类型:char
不同数据类型大小:
整数类型<<<浮点类型
特殊类型:
Char类型和byte、short是同一级别,区分不出大小
Char类型不能和byte相互转换
Char类型不能和short相互转换
但是:byte和short可以相互转换
基本数据类型从小到大排序:
(Byte<<<short<<<char)<<<int<<<long<<<float<<<double
语法:
数据类型 变量名1=数据;------------小容器
数据类型 变量名2=变量名1;--------大容器
6.2强制类型转换
显式转换
含义:大容器中的数据强制转给小容器
语法:
数据类型 变量名1=数据;-----------大容器
数据类型 变量名2=(数据类型)变量名1;--------小容器
底层原理:
6.2.1一次转换
如果大容器强制转换到小容器,数据没有超出范围
6.2.2二次转换
如果大容器强制转换到小容器,数据超出了取值范围,需要再一次进行转换(底层:移位运算)
注意:
a) 强制类型转换只会强制后面的一个,而不是所有
b) 一个整数与byte、short相互运算时,在运算之前数据的数据类型会自动提升为int类型
/**
* 需求:
*
实现一个数据四舍五入并且保留两位小数
*
123.4567
*
*
结果:
*
123.46
*/
7.运算符
含义:数据之间相互运算时使用的符号
7.1 算术运算符
符号 |
描述 |
+ |
相加 |
- |
相减 |
* |
相乘 |
/ |
相除 |
+ |
正数 |
- |
负数 |
+ |
拼接 |
注意:
|
|
% |
取模 |
++在前 |
自增1 先自增,后赋值 别人获取的数据是新值 |
++在后 |
自增1 先赋值,后自增 别人获取的数据是旧值 |
--在前 |
自减1 |
--在后 |
自减1 |
取模规律1
取模规律1-1
/**
* 需求:
*
int a=2;
*
int b=++a;
*
int c=--b;
*
int d=c++;
*
int e=d--;
*
int f=(a++)+(b--)-(++c)+(--d)
*
求f的值:
*/
7.2 赋值运算符
符号 |
描述 |
= |
等号右边赋值给等号左边 |
+= |
等号右边运算完(相加)赋值给等号左边 |
-= |
等号右边运算完(相减)赋值给等号左边 |
*= |
等号右边运算完(相乘)赋值给等号左边 |
/= |
等号右边运算完(相除)赋值给等号左边 |
%= |
等号右边运算完(取模)赋值给等号左边 |
注意: 一个变量与另一个数据相加的结果重新赋值给该变量,称之为叠加 |
7.3 比较运算符
符号 |
描述 |
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
== |
双等于 |
注意: 返回的结果类型只有一种:布尔类型 |
7.4 逻辑运算符
符号 |
描述 |
& |
与 |
两个条件必须都成立,结果才成立 |
|
&& |
短路与 |
两个条件必须都成立,结果才成立 |
|
| |
或 |
两个条件有一个成立,结果就成立 |
|
|| |
短路或 |
两个条件有一个成立,结果就成立 |
|
^ |
异或 |
相同为假,相异为真 |
|
! |
非 |
条件结果的反义词 |
7.5 条件运算符
名称:条件运算符、三木运算符、三目运算符、三元运算符
语法:
条件表达式?数据1:数据2;
条件表达式返回的结果类型:true、false
数据1:当条件表达式为true时,返回数据1给调用者
数据2:当条件表达式为false时,返回数据2给调用者
注意:
返回的数据要么直接使用要么保存
7.5.1入门程序
/**
* 需求:
*
有一个人,判断该人的性别
*
如果性别是女,给她买名牌包包
*
如果性别不是女,啥也不是
*
*
性别:男性 女性 妖性
*
*
分析:
*
1.声明变量保存性别:char
*
2.通过性别变量进行判断是否是女性
*
3.如果条件成立了,那么返回数据
给她买名牌包包
*
4.如果条件不成立,那么返回数据
啥也不是
*
*
第二步:条件表达式
*
第三步:数据1
*
第四步:数据2
*
*
条件运算符语法:
* 条件表达式?数据1:数据2;
*/
char sex='女';
//使用条件运算符
System.out.println(sex=='女'?"给她买名牌包包":"啥也不是");
7.5.2需求
/**
* 需求:
*
1.已知两个变量,利用条件运算符获取两个变量中的最大值
*
2.已知三个变量,利用条件运算符获取三个变量中的最大值
*
3.已知四个变量,利用条件运算符获取四个变量中的最大值
*
附加题:
* 已知四个变量,利用条件运算符获取四个变量中的最大值(嵌套)
*/
//需求一
int a=4,b=5;
System.out.println("两个变量的最大值:"+(a>b?a:b));
//需求二
int a1=4,b1=5,c1=8;
//判断a1和b1的大小
int temp=a1>b1?a1:b1;
//判断temp和c1的大小
int max1=temp>c1?temp:c1;
System.out.println("三个变量的最大值:"+max1);
//需求三
int a2=4,b2=5,c2=8,d2=10;
//1.判断a2和b2的大小 临时变量1保存最大值
int temp1=a2>b2?a2:b2;
//2.判断c2和d2的大小 临时变量2保存最大值
int temp2=c2>d2?c2:d2;
//3.判断临时变量1和临时变量2的最大值
int max2=temp1>temp2?temp1:temp2;
System.out.println("四个变量的最大值:"+max2);
//需求四
int max3=a2>b2?(a2>c2?(a2>d2?a2:d2):(c2>d2?c2:d2)):(b2>c2?(b2>d2?b2:d2):(c2>d2?c2:d2));
System.out.println("四个变量的最大值:"+max3);
8.面试题
8.1 问:说一下=和==区别?
答:
=:赋值运算符
作用:用于给变量赋值
==:比较运算符
作用:比较两个数据是否相等
8.2 问:&和&&的区别?
答:
&:当第一个条件为false时,它还会执行后面的条件
&&:当第一个条件为false时,直接短路
8.3 问:|和||的区别?
答:
|:当第一个条件为true时,它还会执行后面的条件
||:当第一个条件为true时,直接短路
加载全部内容