Java--数据类型

发布于:2023-01-16 ⋅ 阅读:(475) ⋅ 点赞:(0)

1.Java相关简介:

(1)面向对象:依靠对象之间的交互来完成事情。在Java中,一切皆对象,编码的核心就是发现对象、找对象、用对象。所有的属性和行为一定都是归属于某个特定的对象,关注的都是对象本身。

Java的面向对象特性与C++相当,主要不同点在于多重继承。Java中取而代之的是更简单的接口概念,且与C++相比,Java提供了更丰富的运行时自省功能。

eg:面向对象和面向过程在描述狗吃屎的问题上:

面向对象:---->吃只是狗这个对象的一个行为。

面向过程:狗屎---->在C中主要关心的是吃这个方法的实现,对象不清晰。

(2)体系结构中立,可移植性比C++强很多

编译阶段是将*.java文件编译为*.class文件(不是给某个具体的操作系统执行的)。

*.class文件(二进制文件)是交给JVM(Java虚拟机)来执行的,就是一个程序,这个程序可以在多个平台上执行。

解释阶段是JVM读取class文件解释具体操作系统的机器码来执行。

JVM:Java虚拟机,Java最核心的实现,就是一个程序,用来将class文件具体在操作系统上运行起来。支持多种语言,理论上无论哪种编程语言,只要能将源代码编译为*.class代码,都能在JVM上解释运行。

(3)Java是一门半编译半解释型语言。 

编译型语言:一次将所有待翻译的文字写完之后交给翻译软件,一次性生成所有翻译后的语言。类似现实生活中的翻译软件。

解释型语言:没有编译型语言效率高,一行行翻译执行,速度慢。类似现实生活中的翻译,口头翻译。

(4)JDK\JRE\JVM:

JDK:Java开发工具包,供程序员使用,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。JDK=JRE+开发工具集(如编译器Javac等)

JRE:Java运行时环境,是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。JRE=JVM+JavaSE标准类库

JVM:Java虚拟机,运行Java代码,是整个Java实现跨平台的最核心的部分,所有的Java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。。

PS

JVM∈JRE∈JDK

语句∈方法∈类∈源文件(扩展名为.java)

在一个源文件中只能有一个public修饰的类,且源文件名字必须与public修饰的类名字相同。

(5)

*.java:Java源文件,所有的Java源代码都在后缀名为.java的文件中。源文件中至少要包含一个类(class声明的称之为类)。

public class:主类。主类必须与源文件名称相同且一个源文件有且只有一个主类。

一般主方法存在于主类中。所有的方法和属性都在类中进行定义,包括主方法。

PS:要运行上面的HelloWorld.java代码,可以分两步:

第一步:编译阶段-->使用javac(Java编译器)对源文件(.java)进行编译,编译之后生成.class文件(字节码文件),面向JVM生成的,和具体操作系统与硬件无关。格式:javac+空格+主类名称+.java

第二步:解释阶段-->使用Java程序(Java解释器)将.class文件进行解释,翻译成具体操作系统线管的机器码进行执行。格式:java+空格+主类名称

2.(1)Java中的注释分为三种:

单行注释://注释内容(一般用在某一行具体代码之上,表示属性或这行代码的作用)

多行注释:/* */  (不推荐使用)

文档注释:/**   多行注释的内容    */  (一般文档注释用在方法和类声明之上,表示该类或方法的作用,使用javadoc可以解释所有的文档注释,生成java程序文档)

PS:注释只存在于编译阶段(源代码阶段),编译之后的class文件不存在任何注释信息。

PS:若需要将源码中某一行代码或多行代码注释起来,则选中相关的代码ctrl+/即可注释,再次选中使用ctrl+/即可取消注释。

(2)标识符:包含数字、字母、下划线_ 、$(这个虽然合法但不推荐使用,后面将内部类时,$--一边编译后标注内部类)。不能使用数字开头,也不能时关键字,且严格区分大小写。

PS:类名中,采用大驼峰命名法:每个单词的首字母大写,eg:Test   HelloWorld

方法和属性中,采用小驼峰命名法:第一个单词全小写,从第二个单词(若存在)开始首字母大写,eg:int a=10;  int personAge=20;

关键字:有Java语言提前定义好的、有特殊含义的标识符或保留字。

(3)字面常量:直接写出来的值都属于常量(值是一个确定的值,无法修改)。

常量:程序运行期间,固定不变的量称为常量。

(4)数据类型

 Java中的数据类型分为两大类:8种基本数据类型,引用数据类型。

在Java中所有数据类型都有默认值(一定是类中定义的属性猜具备默认值),不是方法中的局部变量。

1字节(byte)=8bit。每个bit位就是一个二进制位数, 2^8多个数。在Java中有使用一个bit位要保存符号,所以会浪费一个bit位。

byte:[-128,127],-2^7~2^7-1

int:-2^31~2^31-1

long:-2^63~2^63-1

 PS:String是一个类,是引用数据类型。

PS:所有的基本数据类型都有相关的包装类,就是将基本的数据类型转为类这个引用类,除了int(对应Integer)和char(对应Character)基本类除外,其它基本类的包装类都是首字母大写即可。因为基本数据类型无法进行对象化处理,所以就引入了包装类。

(5)变量:在程序运行过程中,内容可以改变的量。

强类型语言:定义一个量,必须同时规定该变量的数据类型是什么,值可以改变,但必须在该数据类型范围内更改。(C\C++\JAVA)

定义一个变量的语法:数据类型   变量名称=初始值;

PS:在定义boolean值时,真就是true,错就是false,不能用0或1。

1》整型变量

int类型

定义时给出初始值;定义时不屑初始值,在使用前进行赋值。eg:

 PS

局部变量:在方法中定义的变量都属于局部变量,没有默认值,必须赋值后再使用。

只有在类中定义的变量才有默认值。

整型变量的保存范围:有两个常量分别表示整型的最大值和最小值。最大值为Integer(整型int的包装类).MAX_VALUE,最小值为Integer.MIN_VALUE。

PS:若字面量超出整型最大值,则要更换数据类型(即长整型)。若在运算时超出范围,观察溢出问题。

PS:在Java中,无论什么操作系统、什么硬件,int统一都是4字节,默认值都是0.

PS:无论在什么操作系统中、什么版本的JVM数据类型的大小都是一致的。

PS:基本的数据类型都有相关的包装类,就是将基本数据类型转换为类这个引用数据类型。

长整型

 当数据的大小超出了int的保存范围就会出现精度丢失问题(数据溢出问题)-->数要么存不了报错,要么存的是个错误的值。

错误的值:进行数学运算时发生溢出问题。

编译时报错:直接使用长整型字面量赋值给int时。eg:

 当对应的数据类型保存不下这个数值时,我们就需要更换数据类型-->换一个保存范围更大的类型。长整型变量long  8字节,工厂场景下已经足够用。

一般来说,由于数字字面量默认时int,为了区分int字面量还是long字面量,一般使用正数字面量赋值给long类型,加上l或L作为结尾。eg:(该结果为11)

短整型(一般使用较少)

字节型

byte  ,1字节,单位KB,保存范围-128~127

2》浮点型

double类型

关于某些数值,double输出的偏差问题。(C和Java内存布局都采用IEEE 754标准,尝试使用整数来模拟小数,因此在小数部分有一定偏差。float-->一般只关注小数点6位之内的小数,double-->一般只关注小数点12位之内的小数(保证正确)。)

 单精度浮点数float,4字节,对应包装类为Float.

Java中,浮点数字面量默认为double类型,要想表示float单精度字面量,在结尾加f/F。

3》字符型变量

char ,2字节,对应包装类为Character。使用单引号‘’字面量称为字符字面量,使用char类型保存。

在Java中,char采用Unicode编码,16进制编码(16bit),2字节,支持地球上所有语言。只要是char类型语言,无论保存的时什么语言字符,统一都是2字节。而C默认采用ASCII字符集。eg :

 4》布尔型

boolean,对应包装类为Boolean,默认值为false,只有两值true 和false。(真就是true,假就是false,不能用1或0来表示)


网站公告

今日签到

点亮在社区的每一天
去签到