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)--面向对象概念>中介绍的那样,对象将它的状态存在域中.但是你可能仍然有一些疑问,例如:命名一个域的规则和惯例是什么?除 ...
随机推荐
- 剑指offer二刷——数组专题——数字在升序数组中出现的次数
题目描述 统计一个数字在升序数组中出现的次数. 我的想法 完整的解法我只想到了遍历数组然后依次统计,但这是不聪明的解法,而且没有利用上"升序数组"的这个条件. 题目标签有提醒可以用 ...
- vue项目中扫码枪收款
扫码枪会将扫到的数据带入到获取焦点的输入框中,并且触发输入框的enter回车事件 1.页面上要有一个输入框,并且是获取焦点状态,当然它是隐藏的看不到,我是把宽高设置为0,然后加上回车事件. ...
- REHの收藏列表
搬运自本人的AcWing,所以那里的文章会挺多. 友链(同类文章) :bztMinamoto 世外明月 mlystdcall 新人手册:AcWing入门使用指南 前言 有看到好文欢迎推荐(毛遂自荐也可 ...
- MySQL和sparkSQL合并行
表A 表B 从表A到表B MySQL 写法:select name, group_concat(score seperate ';') as score from A group by name sp ...
- springboot中过滤器、拦截器、切片使用
直接贴代码:采用maven工程 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project ...
- python学习之路 初识xml
import requests from xml.etree import ElementTree as ET r = requests.get('http://www.webxml.com.cn// ...
- Typora快捷使用方式
快捷使用: 1.一级标题 # + 空格 + 内容 2.六级标题 # + 空格 + 内容 3.有序序号 1. + 空格 + 内容 4.无序序号 -+ 空格.*+空格.++空格 5.代码块 ```pyth ...
- rman catalog配置
1.创建表空间 create tablespace rman_tbs datafile '/u01/app/oracle/oradata/PROD1/rman_tbs01.dbf' size 200m ...
- JavaSE07-字符串常用API
1.String 1.1 String类概述 String 类代表字符串,Java 程序中的所有字符串文字(例如"abc")都被实现为此类的实例.也就是说,Java 程序 中所有的 ...
- 关于golang的time包总结
目录 前言 time包详解 总结 前言 各种编程语言都少不了与时间有关的操作,因为很多判断都是基于时间,因此正确和方便的使用时间库就很重要额. golang提供了import "time&q ...