变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念.简言之变量就是用来存数的而数据存储的区域叫内存.计算机的内存类似于人的大脑,用来记忆大量运算时需要的数据.
内存是一个物理设备,其原理类似于生活中的旅馆,要存储的数据就好比要住宿的客人.
首先:计算机会根据变量的数据类型为它在内存中分配一块空间,每个空间都有一个独一无二的内存地址(好比根据客人的类型,分配一个合适的房间,而每个房间的房间号都是不一样的);
然后:将变量对应的值(数据)存放在这块空间中(好比客人入住);
运算时,计算机会根据内存地址找到内存空间中存储的数据.但是内存地址不好记,通常用16进制表示。因此,我们给这块内存空间起了一个别名,通常根据别名就能找到对应空间存储的数据.而变量就是一个数据存储空间的表示.
数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式。接触每种语言的时候,都会存在数据类型的认识,有复杂的、简单的,各种数据类型都需要在学习初期去了解,Java是强类型语言,所以Java对于数据类型的规范会相对严格。
数据类型是语言的抽象原子概念,可以说是语言中最基本的单元定义,在Java里面,本质上讲将数据类型分为两种:基本类型和引用数据类型。
注意String属于引用类型
Java中基本数据类型和引用数据类型
byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127
short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717
int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647
long:长整型,在内存中占64位,即8个字节,取值范围:(-263~263-1)
float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数字(与double的区别在于float类型有效小数点只有6~7位)
double:双精度浮点型,用于存储带有小数点的数字,在内存中占64位,即8个字节
char:字符型,用于存储单个字符,占16位,即2个字节,取值范围0~65535,
boolean:布尔类型,占1个字节,用于判断真或假(仅有两个值,即true、false)
基本数据类型从小到大依次为:
byte,short,char,int,long,float,double
数组,类,接口(后期会陆续讲到)
变量定义的格式包括三个要素: 数据类型 、 变量名 、 数据值 。
格式:
数据类型 变量名 = 数据值;
代码演示如下:
//定义字节型变量
byte b = 100;
System.out.println(b);
//定义短整型变量
short s = 1000;
System.out.println(s);
//定义整型变量
int i = 123456;
System.out.println(i);
//定义长整型变量
long l = 12345678900L;
System.out.println(l);
//定义单精度浮点型变量
float f = 5.5F;
System.out.println(f);
//定义双精度浮点型变量
double d = 8.5;
System.out.println(d);
//定义布尔型变量
boolean bool = false;
System.out.println(bool);
//定义字符型变量
char c = 'A';
System.out.println(c);
long类型:建议数据后加L表示。 float类型:建议数据后加F表示。
注意事项
备注:
变量命名神器Codelf
运算符是一种“功能”符号,用以通知 Java 进行相关的运算。
Java 语言中常用的运算符可分为如下几种:
赋值运算符是指为变量或常量指定数值的符号。
如可以使用 “=” 将右边的表达式结果赋给左边的操作数。
=,+=,-=,*=,/=,%=
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LsLuS6zP-1633921731982)(S1_Java_CH02笔记.assets/image-20200922215432223.png)]
备注:
其中,++ 和 – 既可以出现在操作数的左边,也可以出现在右边,但结果是不同滴
a++:先赋值,后自增
++a:先自增,后赋值
自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!
比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。
比较的结果是一个boolean类型的数据( true 或 false )。
Java 中常用的比较运算符如下表所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UwU6N6MM-1633921731983)(S1_Java_CH02笔记.assets/image-20200922215549944.png)]
注意:
> 、 < 、 >= 、 <=
只支持左右两边操作数是数值类型
== 、 !=
两边的操作数既可以是数值类型,也可以是引用类型
逻辑运算符主要用于进行逻辑运算。
Java 中常用的逻辑运算符如下表所示:
代码演示如下:
public class Test {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));//a && b = false
System.out.println("a || b = " + (a||b) );//a || b = true
System.out.println("!(a && b) = " + !(a && b));//!(a && b) = true
}
}
逻辑运算符的不常用的两个符号:
代码演示&
如下:
int a = 5;
boolean b = a > 7 & a++ > 1;
System.out.println(a);// a = 6;
代码演示|
如下:
int a = 5;
boolean b = a > 3 | a++ > 1;
System.out.println(a);// a = 6;
&
|
还作为位运算符,当& |符号两边的都为数字时,做位运算.
位运算(理解)是程序设计中对位模式按位或二进制数的一元和二元操作。
&
(按位与)是将两个数字转换成二进制进行相应位比较,若相应位置上的值都为1时,返回值的相应位为1,否则为0|
(按位或)是将两个数字转换成二进制进行相应位比较,若相应位置上的值有一个为1时,返回值的相应位为1。否则为0代码演示如下:
int a = 5&5;// 101 101
System.out.println(a);//结果为二进制的101,转换为十进制是5 故 a=5
int a = 4|1;// 100 001
System.out.println(a);//结果为二进制的101,转换为十进制是5 故 a=5
条件运算符也被称为三元运算符。
该运算符有3个表达式,并且需要判断布尔表达式的值。
该运算符的主要是决定哪个值应该赋值给变量。
语法形式:
布尔表达式 ? 表达式1 :表达式2
运算过程:如果布尔表达式的值为true ,则返回表达式1 的值,否则返回 表达式2 的值
示例代码如下:
public class Test {
public static void main(String[] args){
int a , b;
a = 10;
// 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
b = (a == 1) ? 20 : 30;
System.out.println( "b= " + b );//b=30
// 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
b = (a == 10) ? 20 : 30;
System.out.println( "b= : " + b );//b=20
}
}
为什么需要数据类型转换?
因为计算机对不同的数据类型有不同的保存方式,例如:int(整型) 类型在32位计算机中,占4位。而double(双精度)类型在32位计算机中,占8位。当高位转向低位的时候,如果不进行类型转换,就会造成数据溢出。为保护数据信息,需要进行数据类型转换。
基本数据类型从小到大依次为: byte,short,char,int,long,float,double
类型转换的两种方式:
类型转换的两点规则:
在package下导入Scanner类:
import java.util.Scanner;
在main()方法中,创建Scanner对象
Scanner scan = new Scanner(System.in);
获得键盘输入的数据:
System.out.println("请输入年龄:");
int age = scan.nextInt();
System.out.println("请输入单价:");
double price = scan.nextDouble();