/*

*掌握变量的概念

*掌握常用数据类型

*会使用赋值运算符、算术运算符

*掌握boolean类型和关系运算符的使用

*会进行数据类型转换

*掌握键盘输入Scanner

*/

 

一、内存的作用

        内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取内存速度快、临时存储文件。内存是电脑中的主要部件,它是相对于外存而言的。我们平常使用的程序,如Windows操作系统、打字软件、游戏软件等,一般都是安装在硬盘等外存上的,但仅此是不能使用其功能的,必须把它们调入内存中运行,才能真正使用其功能,我们平时输入一段文字,或玩一个游戏,其实都是在内存中进行的。就好比在一个书房里,存放书籍的书架和书柜相当于电脑的外存,而我们工作的办公桌就是内存。通常我们把要永久保存的、大量的数据存储在外存上,而把一些临时的或少量的数据和程序放在内存上,当然内存的好坏会直接影响电脑的运行速度。

 

变量定义:为存储一个数据的申请存储空间。

变量类比旅馆

变量命名规则(必须遵守):

1、开头必须是字母、下滑线、$

2、其余部分必须是字母、下划线、$、数字

3、不能为Java中的关键字

变量命名规范(行业默认)通常第一格单词首字母小写,其后单词首字母大写(驼峰命名)

 

二、Java四类八种数据类型

Java变量、数据类型和运算符-LMLPHP

注:数据类型的作用,因为内存大小不像磁盘那么夸张,仅有几个GB甚至更小。类比书桌的比喻,要想同时处理更多的文件,就必须合理的申请一块空间去处理对应的问题,由此就出现数据类型划分好申请的内存空间大小。

 

基本数据类型和引用数据类型的分析

一、基本数据类型 与 引用类型 在内存中的保存内容

Java中的变量分为基本数据类型引用类型两种。基本类型的变量保存数值本身,而引用类型的变量保存的是引用值,即指向内存空间的地址

基本数据类型四类八种(如上图);

引用数据类型包括:类、接口和数组(如上图)。

 

  • 基本类型 与 引用类型 的区别

1、基本类型在声明其变量时就为它分配了空间,赋有具体的值(具体来说是在变量被使用之前必须被赋值);

2、而引用不同,在进行引用的声明时只给变量声明了引用空间,而不分配数据空间(注意:引用也是占用空间,一个空对象的引用大小大概是4byte)。

 

三、引用传递和值传递(暂时作为了解)

*值传递:方法调用时,实际参数将它的值传递给对应的形式参数,函数接收到的是原始值的副本,此时内存中存在两个相等的基本类型,若方法中对形参执行处理操作,并不会影响 实际参数 的值。

*引用传递:方法调用时,实际参数的引用(是指地址,而不是参数的值)被传递给方法中相应的形式参数,函数接收到的是原始值的内存地址,在方法中,形参与实参的内容相同,方法中对形参的处理会影响实参的值。

Java变量、数据类型和运算符-LMLPHP

输出结果: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型常量可以后加lL’,建议使用L,小写和数字1难以区别

第四类:浮点型(float、double)

在数学中0到1有无数个浮点数;而计算机是离散的,所以表示的时候有误差,计算机用精度(小数点后几位来表示正确)

与整数类型类似,Java浮点型有固定的表数范围和字段长度,不受平台影响

A.单精度浮点数(float)双精度浮点数(double)的区别如下:

(1)在内存中占有的字节数不同

单精度浮点数在机内占4个字节

双精度浮点数在机内占8个字节

(2)有效数字位数不同

单精度浮点数有效数字8位

双精度浮点数有效数字16位

(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变量、数据类型和运算符-LMLPHP

Java变量、数据类型和运算符-LMLPHP

Java变量、数据类型和运算符-LMLPHP

注:

前缀自增(++)自减法(--):先进行自增或自减运算,再进行表达式运算立马变)

后缀自增(++)自减法(--):先进行表达式运算,再进行自增或自减运算(用的时候变)

 

Java变量、数据类型和运算符-LMLPHP

Java变量、数据类型和运算符-LMLPHP

***位运算符(只作为了解)

Java定义了位运算符,应用于整数类型byte、short、int、long、char等,位运算符作用在所有的位上,并且按位运算。

 

逻辑运算符

Java变量、数据类型和运算符-LMLPHP

注:短路逻辑运算符

&&特点:两边都为为true时,结果才为true。那么当得到第一个操作位false时,其结果就必定是false,后面的true或者false对最终结果没有任何影响,所以java的设定就是:&&第一个为false时不对后面的表达式进行计算或者判断

同理 || 的特点:一真即为真。那么第一个为true,后面的true或者false对最终结果没有任何影响,所以java的设定就是:&&第一个为true时不对后面的表达式进行计算或者判断

 

条件运算符(三元运算符)

条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

Variable×=(expression)?Value  if  true  :value  if  false

 

Java运算符优先级

最高优先级:小括号

最低优先级:赋值运算符

优先级顺序:算术运算符>关系运算符>逻辑运算符

Java变量、数据类型和运算符-LMLPHP

 

数据的输入

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、百度等

10-05 12:07