Java中的变量,数据类型和运算符
变量,数据类型和运算符
1.变量是一个数据存储空间的表示,它是储存数据的基本单元。
如何理解这句话,下面用一个表格可以形象的表达:
变量与房间之间的对应关系
房间名称 |
变量名 |
房间类型 |
变量类型 |
入住的客人 |
变量的值 |
通过变量名可以简单快速地找到它存储的数据。将数据指定给变量,就是将数据存储到以别名为变量名的那个房间;调用变量,就是将那个房间中的数据取出来使用。可见,变量是存储数据的
一个基本单元,不同的变量相互独立。
2.Java中常用的数据类型
数据类型 |
说明 |
举例 |
int |
整形 |
用于存储整数,如学员人数,某公司的员工编号,一年的天数,一天的小时数 |
double |
双精度浮点型 |
用于存储带有小数的数字,如商品的价格,世界银行给其他国家(地区)的贷款金额,员工工资 |
char |
字符型 |
用于存储单个字符,如性别 "男"或“女”,成绩“优”或“良” |
String |
字符串型 |
用于存储一串字符,如员工姓名,产品型号,产品的介绍信息 |
不同的数据在存储时的所需要的空间各不相同,例如,int型的数值要占四字节,而double型的数值占八字节。其中,int,double,char都是Java定义的关键字。
3.变量声明及使用
语法:
数据类型 变量名;
数据类型可以是Java中定义的任意一种数据类型。比如,要存储一项考试最高分99.5,获得最高分的学生姓名“张良”及性别‘男’。
double score; //声明双精度浮点型变量score存储分数;
String name; //声明字符串型变量name存储学生姓名;
char sex; //声明字符型变量sex存储性别;
变量名 = 值;
给变量赋值,即“将数据存储至对应的内存空间”
score = 99.5;//存储99.5
name = “张三”;//存储“张三”
sex =‘男’ //存储‘男’
分开的步骤过为繁琐 将以上两个步骤合二为一,在声明一个变量的同时给变量赋值。
数据类型 变量名 = 值;
double score = 99.5;
String name = “张三”;
char sex = ‘男’;
调用变量。使用存储的变量,称之为“调用变量”。
System.out.println(score); //从控制台输出变量score存储的值
System.out.println(name); //从控制台输出变量name存储的值
System.out.println(sex); //从控制台输出变量sex存储的值
注意:变量都必须声明和赋值才能使用!!!
变量命名的规则
变量必须以字母,下划线“-”或“$”符号开头
变量可以包括数字,但不能以数字开头
除了“-”和“$”符号以外,变量名不能包含任何特殊字符
不能使用Java语言的关键字,如int ,class,public等
注意:Java语言区分大小写!Java关键字是Java中定义的,有特别意义的标识符,不能用做变量名,类名,包名等。
规范:变量名要简短且清楚的表明变量的作用,可以由一个或多个单词组成,通常第一个单词的首字母大写,其后的单词首字母大写。
比如 : int ageOfStudent;//学生年龄
int ageOfTeacher;//老师年龄
经验:要尽量使用有意义的变量名,且最好使用简短的英文单词。这样日后更容易维护程序,变量的名称要让人一眼就看出这个变量的作用。
常见错误:
1.变量未赋值先使用
2.使用非法的变量名
3.变量名重复使用
以上错误在在执行时均会报错!
运算符
1.赋值运算符
“=”称为赋值运算符。“=”可以将某个数值赋给变量,或是将某个表达式的值赋给变量。表达式就是符号(如加号,减号)与操作数(如b,3等)的组合。例如:
int b;
int a = (b +3) *(b-1);
注意:"="的功能是将等号右边表达式的结果赋给等号左边的变量。
2. 算术运算符
( + , - , * , / , %)
以上是常用的五种算术运算符加,减,乘 ,除,余。特别注意这个取余运算符是求操作数相除的余数。
数据类型转换
包括自动类型数据转换和强制类型转换两种形式
自动类型数据转换的条件是:两种数据类型要兼容,比如整型和浮点型互相兼容。目标类型大于源类型:double类型可以存放int类型数据,因为double类型变量分配的空间宽度足够存储int类型变量。
强制数据类型转换的语法是:在变量前加上括号,括号中的类型就是要强制转换成的类型。例如
double a = 3.1415926;
int b = (int)a;
运行后b的值为:3
boolean类型
有些程序问题需要判断真假,这时就需要boolean数据类型。
"boolean"又称"布尔",所以我们常说布尔类型,boolean是Java中的关键字,所有字母为小写。 boolean类型只有两个值:ture(真),false(假)。
关系运算符
(>, >= , < ,<= ,== ,!=)
“==”是比较运算符,比较左右两个值是否相等。特别注意要与前边的“=”区别开,“=”是将右边的值赋给左边!“!=”是不等与的意思
以上是6种比较关系的关系运算符,比较的结果是一个boolean类型的值,要么是真(true),要么是假(false)。
Java中提供Scanner类,可以实现从控制台获取键盘上输入的信息
具体方法为:Scanner input = new Scanner(System.in); 写完后发现会报错 ,此时必须在Java源代码的第一行写上如下语句:import java .util. Scanner;或者
import java .util. *;
< 扩展和补充>
数据的存放:
磁盘、内存卡、U盘、光盘、内存条、固态、机械硬盘等等
简单的信息(临时的信息)纸
人把信息存在大脑
变量怎么在内存中存储
已将数据存储到内存中怎么去找
分配后的内存会有内存地址(内存地址不好记忆)
:通过变量名可以简单快速地找到它存储的数据
Java定义的常用数据类型有哪些?
字节:是计算机信息技术用于计量存储容量的一种计量单位,
也表示一些计算机编程语言中的数据类型和语言字符
8个二进制位构成1个"字节(Byte)",它是存储空间的基本计量单位。
1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间
位:是电子计算机中最小的数据单位。每一位的状态只能是0或1
数据只用0和1两种表现形式,(这里只表示一个数据点,不是数字),一个0或者1占一个“位”,而系统中规定8个位为一个字节
一个字节等于8位
(一个字节就是一个英语字母这么大 一个汉字的一半)
电脑里面的所有数据都是以二进制数1或0来存储的,一个1或0叫1bit即1位,8位二进制数称为一个字节,即Byte!
一个字符能存储一个中文汉字
一个汉字占用两个字节
术语:位,字节用于描述计算机数据单位或计算机存储单位。这里主要指存储单位
最小的存储单位称为位(bit):
只能容纳两个值(0或1)之一,不能在一个位中存储更多的信息。位是计算机存储的基本单位。
对于一种给定的计算机设计,字(word)是自然的存储单位。
一个英文字符和英文标点占用一个字节,一个中文字符和中文标点占用2个字节
字节(byte)是常用的计算机存储单位。
字节的标准定义:一个字节均为8位。由于上述所讲每个位或者是0或者是1,所以一个8位的字节包含256种可能的0,1组合
java基本数据类型就8种,记住就好了。除了这些都是引用型的了
java四类八种基本数据类型 (占用字节)
在栈中可以直接分配内存的数据是基本数据类型
字节大小
第一类:整型
int(整数类型) 4
byte(字节类型) 1
short(短整形) 2
long(长整形) 8
第二类:浮点型
double(双精度类型 双精度) 8
float(浮点类型 单精度) 4
第三类:逻辑型
boolean(布尔型 他只有两个值1.True 2.False) 1
第四类:字符型
char(字符型) 2
主类型 大小 最小值 最大值
boolean 1位 - -
char 16位 0 2的16次方-1=65535
byte 8位 -128 +127
short 16位 -2的15次方=-32768 +2的15次方-1
int 32位 -2的31次方 +2的31次方-1
long 64位 -2的63次方 +2的63次方-1
float 32位 1.4E-45 3.4028235E38
double 64位 4.9E-324 1.7976931348623157E308
// byte
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("最小值:" + Byte.MIN_VALUE);
System.out.println("最大值:" + Byte.MAX_VALUE);
System.out.println();
// short
System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// long
System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// float
System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
//1.4乘于10的负45次方;此处的E并非自然对数,而是10的次方的意思。这是科学计数法的写法
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
// double
System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
// char
System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="+ (int) Character.MIN_VALUE);
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="+ (int) Character.MAX_VALUE);
类型转换:
自动类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
数据类型转换必须满足如下规则:
1. 不能对boolean类型进行类型转换。
2. 不能把对象类型转换成不相关类的对象。
3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
4. 转换过程中可能导致溢出或损失精度,例如:
int i =128;
byte b = (byte)i;
因为byte类型时8位,最大值为127,所以当强制转换为int类型值128时候就会导致溢出。
5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;
(int)-45.89f == -45
规则一:如果一个操作数为double型,整个表达式都提为double
规则二:满足自动转换类型
char c1='a';//定义一个char类型
int i1 = c1;//char自动类型转换为int
System.out.println("char自动类型转换为int后的值等于"+i1);
char c2 = 'A';//定义一个char类型
int i2 = c2+1;//char 类型和 int 类型计算
System.out.println("char类型和int计算后的值等于"+i2);
解析:c1的值为字符'a',查ascii码表可知对应的int类 型值为97,'A'对应值为65,所以i2=65+1=66
扩展:
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646
强制类型转换:
语法:(类型名)表达式
强制类型转换
1. 条件是转换的数据类型必须是兼容的。
2. 格式:(type)value type是要强制类型转换后的数据类型 实例:
实例
public class QiangZhiZhuanHuan{
public static void main(String[] args){
int i1 = 123;
byte b = (byte)i1;//强制类型转换为byte
System.out.println("int强制类型转换为byte后的值等于"+b);
}
}
隐含强制类型转换
1. 整数的默认类型是 int。
2. 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。
运算符的优先级
最高 小括号()
最低 赋值=
优先级顺序:算数运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符
short a = 1;
short b = 2;
那么 a+b 是什么类型?
答:在java的世界里,如果比int类型小的类型做运算,java在编译的时候就会将它们统一强转成int类型。当是比int类型大的类型做运算,就会自动转换成它们中最大类型那个。
String a1 = "张三";// 000001
String a2 = "张";// 000001
if(a1 == a2){ // 比较的地址
System.out.println("True");
}else{
System.out.println("False");
}
if(a1.equals(a2)){// 比较值是否相等
System.out.println("True");
}else{
System.out.println("False");
}
}
Java中的变量,数据类型和运算符的更多相关文章
- Java1变量数据类型和运算符
day02_变量数据类型和运算符 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 public class jh_01_数据类型说明 { public ...
- Java中的变量数据类型补充
Java中变量的数据类型的补充 变量按照数据类型进行分类 1.基本数据类型 数值型:①整数类型(byte,short,int,long)②浮点型(float,doubbe)③字符型(char)④布尔型 ...
- JavaSE-02 变量 数据类型和运算符
学习要点 掌握变量的概念 掌握常用数据类型 掌握赋值运算符.算术运算符 掌握boolean数据类型和关系运算符 掌握变量的概念 面向过程程序的定义 程序的定义:程序=数据+算法+文档 程序要操作的数据 ...
- Java历程-初学篇 Day02变量,数据类型和运算符
一,数据类型 1,基础数据类型 整型 byte short int long 浮点型 float double 字符型 char 布尔类型 boolean 2,引用类型 String 字符串型 二,变 ...
- 疯狂JAVA——第三章 数据类型和运算符
3.1注释 1.单行注释 2.多行注释 3.文档注释——文档注释以斜线后紧跟两个星号(/**)开始,以星号后紧跟一个斜线结束(*/),中间部分都是文档注释,会被提取到API文档中. API文档类似于产 ...
- Java Part 001( 03_01_数据类型和运算符 )
注释 Java语言的注释一共有三种类型,分别是单行注释.多行注释和文档注释. 1. 单行注释 单行注释就是在程序中注释一行代码,在Java语言中,使用双斜线“//”进行单行注释. 2. 多行注释 多行 ...
- java2变量数据类型和运算符
public class jh_11_加加减减运算符 { public static void main(String[] args) { int a = 5,b =2 ; a ++;// 对自身 ...
- Java 第二章 变量、数据类型和运算符
第二章 变量.数据类型和运算符 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据. ...
- 使用 JavaScript 中的变量、数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算符的不同位置得到不同的结果
查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的变量.数据类型和运算符,计算出两个 number 类型的变量与一个 string 类型的变量的和,根据 string 类型处于运算 ...
随机推荐
- [atAGC055B]ABC Supremacy
将第$i$个字符在$A->C->B->A$这个环上操作$i$次,而此时的操作也即将$AAA,BBB$或$CCC$变为其中的另一个字符串 通过操作$XXXY->YYYY-> ...
- [bzoj5462]新家
先离线,将询问按照时间排序,维护商店出现和消失 对于每一个询问,先二分枚举答案,假设是ans, 即要求对于区间[l-ans,l+ans],商店的种类数是k(l是询问的位置) (当然需要先将所有位置离散 ...
- [bzoj1115]石子游戏
考虑令$bi=ai-a_{i-1}$,那么每一次操作相当于让$bi-=x$且$b_{i+1}+=x$,相当于从i向i+1移动x个石子,那么容易发现偶数堆没有用处,因为另一方可以用同样的操作,因此问题相 ...
- [GYCTF2020]Easyphp
知识点 反序列化pop链 反序列化字符逃逸 解题过程 www.zip 备份文件获取源码 审计代码构造pop链 <?php Class UpdateHelper{ public $id; publ ...
- 一个 Linux 后台程序编程案例分析
Linux 下的一个进程打开一个日志文件,不定期地往该文件里写入日志.此时可以在控制台使用 mv 命令给该日志文件改个名字或者用 rm 命令把这个日志文件删除掉.Linux 下是允许这么干的!对于改日 ...
- iNeuOS工业互联网操作系统,分布式云端控制安全策略和增加实时日志功能
目 录 1. 概述... 2 2. 平台演示... 2 3. 云端控制策略和应用过程... 2 3.1 云端控制策略... 2 3.2 ...
- 洛谷 P6776 - [NOI2020] 超现实树(找性质,神仙题)
洛谷题面传送门 nb tea 一道! 首先考虑怎样入手分析这个看似非常不可做的问题.首先题目涉及高度无穷的树,根本枚举不了.不过我们冷静一下就会发现,如果我们记 \(mx=\max\limits_{i ...
- [ARC101C] Ribbons on Tree
神仙的容斥题与神仙的树形DP题. 首先搞一个指数级的做法:求总的.能够覆盖每一条边的方案数,通过容斥可以得到\(\text{ans}=\sum\limits_E{(-1)^{|E|}F(E)}\).其 ...
- Netty | 第1章 Java NIO 网络编程《Netty In Action》
目录 前言 1. Java 网络编程 1.1 Javs NIO 基本介绍 1.2 缓冲区 Buffer 1.2 通道 Channel 1.3 选择器 Selector 1.4 NIO 非阻塞网络编程原 ...
- Hive(八)【行转列、列转行】
目录 一.行转列 相关函数 concat concat_ws collect_set collect_list 需求 需求分析 数据准备 写SQL 二.列转行 相关函数 split explode l ...