/*
*掌握变量的概念
*掌握常用数据类型
*会使用赋值运算符、算术运算符
*掌握boolean类型和关系运算符的使用
*会进行数据类型转换
*掌握键盘输入Scanner
*/
一、内存的作用
内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取内存速度快、临时存储文件。内存是电脑中的主要部件,它是相对于外存而言的。我们平常使用的程序,如Windows操作系统、打字软件、游戏软件等,一般都是安装在硬盘等外存上的,但仅此是不能使用其功能的,必须把它们调入内存中运行,才能真正使用其功能,我们平时输入一段文字,或玩一个游戏,其实都是在内存中进行的。就好比在一个书房里,存放书籍的书架和书柜相当于电脑的外存,而我们工作的办公桌就是内存。通常我们把要永久保存的、大量的数据存储在外存上,而把一些临时的或少量的数据和程序放在内存上,当然内存的好坏会直接影响电脑的运行速度。
变量定义:为存储一个数据的申请存储空间。
变量类比旅馆
内存 | 旅馆 |
变量 | 房间 |
数据类型 | 房间类型(单人间、双人间、总统套房等) |
变量名 | 房间号(同种类型有多个这样的房间) |
存储内容 | 入住的人 |
变量命名规则(必须遵守):
1、开头必须是字母、下滑线、$
2、其余部分必须是字母、下划线、$、数字
3、不能为Java中的关键字
变量命名规范(行业默认):通常第一格单词首字母小写,其后单词首字母大写(驼峰命名)
二、Java四类八种数据类型
注:数据类型的作用,因为内存大小不像磁盘那么夸张,仅有几个GB甚至更小。类比书桌的比喻,要想同时处理更多的文件,就必须合理的申请一块空间去处理对应的问题,由此就出现数据类型划分好申请的内存空间大小。
基本数据类型和引用数据类型的分析
一、基本数据类型 与 引用类型 在内存中的保存内容
Java中的变量分为基本数据类型和引用类型两种。基本类型的变量保存数值本身,而引用类型的变量保存的是引用值,即指向内存空间的地址。
基本数据类型四类八种(如上图);
引用数据类型包括:类、接口和数组(如上图)。
- 基本类型 与 引用类型 的区别
1、基本类型在声明其变量时就为它分配了空间,赋有具体的值(具体来说是在变量被使用之前必须被赋值);
2、而引用不同,在进行引用的声明时只给变量声明了引用空间,而不分配数据空间(注意:引用也是占用空间,一个空对象的引用大小大概是4byte)。
三、引用传递和值传递(暂时作为了解)
*值传递:方法调用时,实际参数将它的值传递给对应的形式参数,函数接收到的是原始值的副本,此时内存中存在两个相等的基本类型,若方法中对形参执行处理操作,并不会影响 实际参数 的值。
*引用传递:方法调用时,实际参数的引用(是指地址,而不是参数的值)被传递给方法中相应的形式参数,函数接收到的是原始值的内存地址,在方法中,形参与实参的内容相同,方法中对形参的处理会影响实参的值。
输出结果:100、99、100、100
* 这里要特殊考虑String,以及Integer、Double等几个基本类型包装类,它们都是immutable类型,
因为没有提供自身修改的函数,每次操作都是新生成一个对象,所以要特殊对待,可以认为是和基本数据类型相似,传值操作。
四、结论
1)形参为基本类型时,对形参的处理不会影响实参。
2)形参为引用类型时,对形参的处理会影响实参。
3)String,Integer,Double等immutable类型的特殊处理,可以理解为值传递,形参操作不会影响实参对象。
第一类:逻辑型boolean
Boolean类型数据只允许取之true或false;
不可以0或非0的整数替代true和false,这点和C语言不同
第二类:文本型char
Char类型占2个字节,字符常量为单引号括起来的单个字符
Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示
Unicode是全球语言统一编码
Java语言中还允许使用转义字符‘\’来将其后的字符转变为其他的含义
第三类:整数型(byte、short、int、long)
byte从-128到127
short从-32768到32767
int从-2147483648到2147483647共10位
long从-9223372036854775808到9223372036854775807共19位
Java各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响以保证Java程序的可移植性
Java语言的整型常量默认为int型,声明long型常量可以后加’l’或’L’,建议使用L,小写和数字1难以区别
第四类:浮点型(float、double)
在数学中0到1有无数个浮点数;而计算机是离散的,所以表示的时候有误差,计算机用精度(小数点后几位来表示正确)
与整数类型类似,Java浮点型有固定的表数范围和字段长度,不受平台影响
A.单精度浮点数(float)与双精度浮点数(double)的区别如下:
(1)在内存中占有的字节数不同
单精度浮点数在机内占4个字节
双精度浮点数在机内占8个字节
(2)有效数字位数不同
(3)所能表示数的范围不同
单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38
双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308
(4)在程序中处理速度不同
一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快
Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F
Java数据类型转换规则
A、blooean类型不可以转换为其他的数据类型
B、整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
1、容量小的类型自动转换为容量大的数据类型,数据类型按容量大小排序为
byte,short,char->int->long->float->double
byte,short,char之间不会相互转换,它们三者在计算时首先会转换为int类型
2、容量大的数据转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意
3、有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算
三、赋值运算符(=):把右侧的表达式赋值给左侧变量名
注:
前缀自增(++)自减法(--):先进行自增或自减运算,再进行表达式运算(立马变)
后缀自增(++)自减法(--):先进行表达式运算,再进行自增或自减运算(用的时候变)
***位运算符(只作为了解)
Java定义了位运算符,应用于整数类型byte、short、int、long、char等,位运算符作用在所有的位上,并且按位运算。
逻辑运算符
注:短路逻辑运算符
&&特点:两边都为为true时,结果才为true。那么当得到第一个操作位false时,其结果就必定是false,后面的true或者false对最终结果没有任何影响,所以java的设定就是:&&第一个为false时不对后面的表达式进行计算或者判断;
同理 || 的特点:一真即为真。那么第一个为true,后面的true或者false对最终结果没有任何影响,所以java的设定就是:&&第一个为true时不对后面的表达式进行计算或者判断;
条件运算符(三元运算符)
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
Variable×=(expression)?Value if true :value if false
Java运算符优先级
最高优先级:小括号
最低优先级:赋值运算符
优先级顺序:算术运算符>关系运算符>逻辑运算符
数据的输入
import java.util.Scanner; //引用Java路径util下的扫描仪Scanner
public class Test{ //外层框架
public static void main(String[] args){ //main方法入口
Scanner in=new Scanner(System.in); //把新的扫面仪复制给in
System.out.println("请输入你的姓名:"); //提示输入内容
String name=in.next(); //把in扫描仪输入的内容复制给String类型的name
System.out.println("请输入你的户籍:"); //提示输入内容
String home=in.next(); //把in扫描仪输入的内容复制给String类型的home
System.out.println("请输入你的年龄:"); //提示输入内容
int age=in.nextInt(); //把in扫描仪输入的内容复制给int类型的age
System.out.println("姓名"+name+"户籍"+home+"年龄"+age);
}
}
本篇文章,引用了很多网上收集的资料,感谢:菜鸟教程、CSND、百度等