java基础2---属性

第一节、变量(属性的组成一)

一、变量的概念:

变量是一个代名词,指代在内存中开辟的存储空间,

注:存储空间用于存放运算过程中需要用到的数据

注:方便理解,变量是山西省这个名字;存储空间就是山西省这个占用空间;值就是山西省的人、植物等;

二、变量的使用

1、变量的声明

(1)声明内容

变量的声明包含两点:变量名和数据类型;

(2)声明效果

声明后,JVM会为该变量在内存中开辟存储空间,不同的变量类型决定了存储空间的结构;

(3)注意事项

(a)未经声明的变量不能使用,否则会报编译异常

(b)一条语句可以声明多个同类型变量

int a=1, b=2;

int c, d=3;

(c)变量的值和类型必须对应;

2、变量的命名规范

(1)能:由字母、数字、“_”或“$”符组成

(2)不能:

    不能以数字开头;

    不能是java保留字(一些Java语言规定好的,有特殊含义的字符),如:int、if、else、for、break等

(3)建议:中文可以作为变量名,但不提倡使用。

(3)注意:Java大小写敏感,即:严格区分大小写,在给变量声明和使用保持一致。

3、变量的初始化

(1)初始化方式

(a)在声明时候初始化(注:局部变量一定是需要这样的)

(b)在声明后,第一次使用前初始化

(c)类加载的时候,给与默认初始化值

int类型变量默认初始值为0
float类型变量默认初始值为0.0f
double类型变量默认初始值为0.0
boolean类型变量默认初始值为false
char类型变量默认初始值为0(ASCII码)
long类型变量默认初始值为0

所有对象引用类型变量默认初始值为null

成员有两种特殊的类型,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化

(2)初始化注意事项

(a)未经初始化的变量的使用(局部的不能,成员的可以)

4、变量的操作

(1)概述

变量的操作就是对所存储数的操作;

(2)种类

(a)运算操作:注意值必须和类型匹配

(b)输出操作:

(c)初始化:

(d)声明

第二节、基本数据类型(属性的组成二.1)

一、数据类型简介

1、概念

JVM会为该变量在内存中开辟存储空间,不同的数据类型决定了该存储空间的结构和存储大小;从而有效管理存储空间;

数据类型就相当于省---市---县—乡等不同类型;

2、种类

基本数据类型和引用数据类型两种;

3、数据类型和数据结构的区别(为了记忆自己想的,没有验证)

基本数据类型是原子

数据结构是分子

二、基本数据类型简介

1、种类

基本数据类型主要分为4大类 (整数类型、浮点类型、char、boolean);

 整数类型又分为了4小类(byte、short、int、long);

浮点类型也分了2小类(float、double),

最常用的有5种,分别为int、long、double、char、boolean   

2、boolean类型

2.1概述

boolean类型适用于关系、逻辑运算, 表示某个条件是否成立;true表示条件成立, 而false表示条件不成立。

2.2使用

2.2.1使用一:赋值

(1)直接用英文字母true或false

(2)关系运算的结果,所谓关系运算就是比较两个变量的大小相等等关系

2.2.2使用二:输出

(1)输出变量的结果是false或者true

3、int

3.1、概述

int是最常用的整数类型,一个int类型的变量占用4个字节,即32位的内存空间。Int的最大表示范围为:-231~231-1,即-2147483648 ~2147483647,大约正负21个亿多些

3.2、整数直接量是int类型

3.2.1概述

所谓整数直接量(literal)就是直接写出的整数,例如:下面的语句中,100就是直接量。 int a=100;

3.3、使用

3.3.1使用一(赋值)

(1)超出范围:

整数的直接量的类型默认为int类型,如果直接写出的整数超过了int的表达范围,将会出现编译错误,下面的语句,就是因为超出了整数的范围而导致的编译错误。 copytextpop-up

int d = 10000000000; // 编译错误10000000000这个数值写出来就是错误的,因为Java认为所有直接写出的整数都是int类型,而这个数值超过了int的表达范围。

(2)直接量类型:

除了通常的十进制数字形式,整数直接量也可以写成16进制的形式(以0X或0x开头)或8进制的形式(以0开头)或者一个字符,请看如下直接量四种表现形式:copytextpop-up

int a = 100000; // 10进制

int b = 0x186a0; // 16进制

int c = 0303240; // 8进制

int d = ‘d’;//字符:输出是字符对于的unicode编码的十进制;

3.3.2使用二:除法取整

若对两个整数相除,会舍弃小数的部分(注意:不是四舍五入),结果也是整数。

3.3.3使用三:运算溢出

当两个整数进行运算时, 其结果可能会超过整数的范围而发生溢出,正数过大而产生的溢出,结果为负数;负数过大而产生的溢出,结果为正数

3.3.4使用四:sysout输出

不管值是什么,输出都是int类型的10进制;

4、Long类型

4.1概述

在表示整数时,如果int类型的范围不够,可以使用long类型,一个long型的变量占用8个字节(即64位),最大表示范围为:-263 ~ 263-1,即 -9223372036854775808 ~ 9223372036854775807

4.2使用

对于较大的整数运算(超过int的表达范围),可以使用long型

4.2.1赋值

值后面必须加l或者L,不能虽然类型是long,但是值是int;

值超过int类型,会报溢出;

4.3应用

JDK提供 System.currentTimeMillis() 方法,返回1970年1月1日零点到此时此刻所经历的毫秒数,数据太大,故其数据类型为long

long time = System.currentTimeMillis();

5、Double类型

5.1概述

double类型的精度值是float类型的两倍,因此而得名双精度;大多数场合使用double表示浮点数

5.2使用

5.2.1赋值---浮点数直接量是double类型

书写方式:浮点数的直接量有两种写法:

1)通常写法,如:3.14、314、0.1、.5。

2)科学计数法,如:1.25E2、1.25e2、1.25E-2。其中,1.25E2表示1.25乘以10的2次方。

注:如果类型是float:如果需要表示float类型的直接量,需要加“f”或“F”后缀;

例如float f1 = 3.14   //编译错误,应该写成3.14f;

5.2.2运算

问题:double运算时会出现舍入误差

原因:2进制系统中无法精确的表示1/10,就好像十进制系统中无法精确的表示1/3一样

解决方案:如果需要精确的运算可以考虑放弃使用double或float而采用BigDecimal 类来实现;

6、Char

6.1概述

字符类型char:事实上是一个16位无符号整数(short类型的正数)

char型变量存放的值:其实就是这个两字节的short类型的编号

char显示的内容:这个编码类似于字符点阵的身份证号;对应这个编码找到字符点阵去显示这个点阵,显示出来后即这个字符

注:Java字符类型采用Unicode字符集编码(通用码、统一码、万国码),而Unicode是世界通用的定长字符集,所有的字符都是16位来表示

注:字符点阵:字符是字母、数字、汉字图形、特殊符号这样的字符,计算机显示字符是用点阵的形式显示的,每一个字符都对应一个自己的点阵,所有字符的点阵数据都存放在字库中;

6.2使用

6.2.1使用一:赋值

(1)字符直接量:形如‘A’或者’中’,变量中实际存储的是该字符的Unicode编码(无符号整数值),一个char型变量只能存储一个字符;

注:空白字符:空白字符包括:空格、tab键、换行

注:特殊字符:想表示回车、换行符时、单引号等?对于不方便输出的字符可以采用转义字符来表示;char c = '\'; System.out.println(c); //输出的结果为:

(2)整型直接量:范围在0~65535之间的整数,变量中实际存储的即该整数值,但表示的是该整数值所对应的Unicode字符。

(3)Unicode形式:形如‘u0041’,Unicode字符的16进制形式

6.2.2使用二:运算

对char类型字符运行时,实际上将他的Unicode转换为十进制做运算;

运算类型:

(1)字符和字符

(2)字符和整数

(3)整数和整数

注:不能是字符和字符串,不然会报类型错误;字符串无法转换为字符;

注:运算结果值需要在0~65535范围内

6.2.3使用三:输出sysout

(单个字符)          结果是单个字符

(Unicode)            结果是单个字符

(运算)                结果是int类型的整数;因为运算让short会转换为int类型;

(运算后的变量)   结果是字符;

三、基本类型间转换

1、转换方式

(1)自动类型转化(隐式类型转换):从小类型到大类型可以自动完成。

Byte—short---int---long---float---double

Char---int;

应用:在一个表达式中出现了多种数据类型,则运算结果会自动的向较大的类型进行转化

注意:int直接量可以直接赋值给byte、char和short,只要不超过其表示范围;

(2)强制类型转换

从大类型到小类型需要强制转换符

语法:(需要转换成的类型)变量

注:有可能会造成精度的损失或者溢出;为大类型的精度值大于小类型,取值范围大于小类型,所以,在使用强制转化时要求显式的告诉编译器,正在进行强制转换。

四、Java数据类型在内存中的存储:面向对象的内存管理

 

五、基本类型和引用类型作为参数传递:java基础里面的方法;

向成为千里马奋斗,为伯乐打call;
原文地址:https://www.cnblogs.com/mhy666/p/mhy_java_jichu_shuxing.html