Java基础-数据类型及变量
Java基本语法
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时,直接短路
Java基础-数据类型及变量的更多相关文章
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...
- Java基础语法(2)-变量
title: Java基础语法(2)-变量 blog: CSDN data: Java学习路线及视频 1.什么是变量? 变量的概念 内存中的一个存储区域 该区域的数据可以在同一类型范围内不断变化 变量 ...
- Java基础语法01——变量与运算符
本文是对Java基础语法的第一部分的学习,包括注释:标识符的命名规则与规范:变量的数据类型分类以及转换:以及六种运算符(算术.赋值.比较.逻辑.三元和位运算符).
- Java基础-数据类型应用案例展示
Java基础-数据类型应用案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.把long数据转换成字节数组,把字节数组数据转换成long. /* @author :yinz ...
- Java基础-数据类型int,short,char,long,float,double,boolean,byte
Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...
- java基础数据类型包装类
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Java之数据类型,变量赋值
Java中的基础数据类型(四类八种): 1.整数型 byte----使用byte关键字来定义byte型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值.byte型是整型中所分配的内存空间是最 ...
- Java基础二(变量、运算符)
1.变量2.运算符 ###01变量概述 * A: 什么是变量? * a: 变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器,用来装载 ...
- Java基础教程(5)--变量
一.变量 1.变量的定义 正如上一篇教程<Java基础教程(4)--面向对象概念>中介绍的那样,对象将它的状态存在域中.但是你可能仍然有一些疑问,例如:命名一个域的规则和惯例是什么?除 ...
随机推荐
- 算法——移掉K位数字使得数值最小
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. leetcode 解题思路:如果这个数的各个位是递增的,那么直接从最后面开始移除一定就是最最小的:如果这个数的 ...
- Android Studio/IDEA插件
1.android parcelable code generator 2.android code generator3.gson format4.android postfix completio ...
- Nginx安装配置教程
转自https://www.cnblogs.com/zhouxinfei/p/7862285.html nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是 ...
- [日常摸鱼]bzoj2823 [AHOI2012]信号塔
题意:$n$个点,求最小圆覆盖,$n \leq 5e5$ 这题数据是随机的hhh 我们可以先求出凸包然后对凸包上的点求最小圆覆盖-(不过直接求应该也行?) 反正随便写好像都能过- #include&l ...
- 题解洛谷P1538【迎春舞会之数字舞蹈】
方法:暴力,判断,输出 本题为了更好理解建议各位可以复制样例来研究,甚至可以复制题解来测试思想,相信大家不会抄. 有什么不好的请大佬们在评论里指出,谢谢 #include <bits/stdc+ ...
- Eureka系列(七) 服务下线Server端具体实现
服务下线的大致流程图 下面这张图很简单地描述了Server端服务下线的大致流程: 服务下线Server端实现源码分析 Eureka服务实现是通过Server端InstanceResource ...
- 作为Java新手,如何才能快速的看透一个Java项目?
前言 技术学习是一个总结.纠错.触类旁通的过程,而不是单纯重复练习的过程,如果你问一个做过5年以上Java的老码农,他们很多人都会有很强的"搬砖感",这种"搬砖感&quo ...
- 用Python批量裁取图,来获取文件夹中所有图片名
批量截图(截取正方形图,哪个边短就用哪个边作为标准来截取) 功能是裁取图片中红色框的部分. 代码为: import sys from tkinter.tix import Tk from PIL im ...
- python极简代码之检测元素组成是否相同
可以检测两个字符串的组成是不是一样的,可以检测两个列表的元素是否一样,可以检测集合里的元素是否一致,可以检测字典里的值是否一致: 1 # !usr/bin/env python3 2 # *-* co ...
- [WPF] 让第一个数据验证出错(Validation.HasError)的控件自动获得焦点
1. 需求 在上一篇文章 <在 ViewModel 中让数据验证出错(Validation.HasError)的控件获得焦点>中介绍了如何让 Validation.HasError 的控件 ...