java数据类型初学者入门.docx

上传人:b****4 文档编号:4397787 上传时间:2023-05-07 格式:DOCX 页数:14 大小:100.57KB
下载 相关 举报
java数据类型初学者入门.docx_第1页
第1页 / 共14页
java数据类型初学者入门.docx_第2页
第2页 / 共14页
java数据类型初学者入门.docx_第3页
第3页 / 共14页
java数据类型初学者入门.docx_第4页
第4页 / 共14页
java数据类型初学者入门.docx_第5页
第5页 / 共14页
java数据类型初学者入门.docx_第6页
第6页 / 共14页
java数据类型初学者入门.docx_第7页
第7页 / 共14页
java数据类型初学者入门.docx_第8页
第8页 / 共14页
java数据类型初学者入门.docx_第9页
第9页 / 共14页
java数据类型初学者入门.docx_第10页
第10页 / 共14页
java数据类型初学者入门.docx_第11页
第11页 / 共14页
java数据类型初学者入门.docx_第12页
第12页 / 共14页
java数据类型初学者入门.docx_第13页
第13页 / 共14页
java数据类型初学者入门.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

java数据类型初学者入门.docx

《java数据类型初学者入门.docx》由会员分享,可在线阅读,更多相关《java数据类型初学者入门.docx(14页珍藏版)》请在冰点文库上搜索。

java数据类型初学者入门.docx

java数据类型初学者入门

Java中有两种数据类型

基本数据类型

即int/char等这样的数值类型,共8种

引用类型

除了基本数据类型之外都是引用类型

包括API中的类,比如String、File

也包括自定义的类,如PersonalAccount,CreditAccount

包括数组,如int[],String[]

基本数据类型

8种基本数据类型

数据类型

位数

取值范围

说明

byte

8

-128~127

数据存储在内存中的最原始形态

short

16

-32768~32767

int

32

-231~231-1

long

64

-263~263-1

float

32

double

64

char

16

‘\u0000’~‘\uFFFF’

boolean

1

true/false

基本数据类型转换

程序中经常会遇到要将数据类型进行转换的情况(如:

在一个表达式中存在不同类型的操作数时),Java的数据类型转换比C控制得更为严格;

数据类型转换有两种情况:

自动类型转换

强制类型转换

自动类型转换

自动类型转换也称作隐式类型转换;

将一种类型的变量赋值给另一种类型的变量时,只要满足以下条件,就会发生自动类型转换

–两种类型之间相互兼容

–目标类型大于源类型(即类型提升)

如:

charch='A';

intnum=ch;

floatf=num;

doubled=f;

//类型转换自动发生,无需显式说明

类型提升规则

有类型提升的情况下,编译器将自动进行类型转换,否则就要进行强制类型转换;

类型提升应遵循如下规则:

两种类型必须兼容,且目标类型大于源类型,例如:

byte、char和short类型都可以提升为int型。

对于表达式而言,其最终结果将会与表达式中最高的数据类型相同。

强制类型转换

强制类型转换也称作显式类型转换;

如果被转换的值的数据类型大于其目标类型,将会丢失部分信息;

如:

intx=65;

charch=x;

这样的语句将报错,因为char类型精度低于int类型,编译器无法将其自动转换,只能进行强制转换:

intx=65;

charch=(char)x;

基本数据类型的扩展

System.out.println(Integer.MAX_VALUE);//打印最大整数:

2147483647

System.out.println(Integer.MIN_VALUE);//打印最小整数:

-2147483648

相应的浮点数:

System.out.println(Float.MAX_VALUE)

System.out.println(Float.MIN_VALUE)

双精度:

System.out.println(Double.MAX_VALUE)

System.out.println(Double.MIN_VALUE)

Float输出的有效位数为7位,总位数为8位?

为什么?

首先说一下:

范围是3.4E-38——3.4E+38,可提供7位有效数字。

上述这两个量都是近似值,各个编译器不太一样的。

下面我就将标准值是怎么定义的,和你说一下:

这个比较复杂,建议你找一下IEEE754标准看一下。

这个简单说一下吧:

在IEEE754标准中进行了单精度浮点数(float)和双精度数浮点数(double)的定义。

float有32bit,double有64bit。

它们的构成包括符号位、指数位和尾数位。

这些位的构成如下:

种类-------符号位-------------指数位----------------尾数位----

float---第31位(占1bit)---第30-23位(占8bit)----第22-0位(占23bit)

double--第63位(占1bit)---第62-52位(占11bit)---第51-0位(占52bit)

取值范围主要看指数部分:

float的指数部分有8bit(2^8),由于是有符号型,所以得到对应的指数范围-128~128。

double的指数部分有11bit(2^11),由于是有符号型,所以得到对应的指数范围-1024~1024。

由于float的指数部分对应的指数范围为-128~128,所以取值范围为:

-2^128到2^128,约等于-3.4E38—+3.4E38

精度(有效数字)主要看尾数位:

float的尾数位是23bit,对应7~8位十进制数,所以有效数字有的编译器是7位,也有的是8位

 

引用数据类型的定义

在Java中,除了上述基本数据类型的变量以外,其余的全都属于引用数据类型,

包括

•API中的类,如String、File等

•数组(后续学习)

•自定义的类,如Cars、Student

对象全部是引用数据类型

引用类型使用的场景与基本数据类型完全一样

作为属性的类型使用

作为方法的返回值类型使用

作为方法的形式参数类型使用

引用数据类型的赋值

引用类型都是对象,所以赋值都使用new调用构造方法进行赋值

例外:

String类可以直接使用=赋值,不使用new,后续详细学习

基本类型和引用类型的区别

基本数据类型

引用数据类型

概念

变量(单纯的值)

对象(引用)

存储位置

在栈中存值

在栈中存引用,在堆中存具体对象的属性值

赋值方式

直接赋值

new,String类和包装器类可以直接赋值

基本数据类型赋值

基本数据类型之间赋值,是将值进行拷贝

例:

intx=10;

inty=9;

x=y;

把y赋值给x,就是把9拷贝给x,x和y依然是两个内存地址,没有影响

引用类型的赋值都是通过new调用构造方法

例:

Studentstu1=newStudent(“Alice”,18);

Studentstu2=newStudent((“John”,17);

引用类型之间赋值,是虚地址之间的赋值

例:

stu1=stu2;stu2赋值给stu1,指的是把stu2的虚地址赋值给stu1,也就是二者将指向同一个实际对象John

==运算

在判断引用数据类型时判断的是地址,即虚地址一样才返回true

在判断基本数据类型时判断的是数值,即二进制一样才返回true

这里最好不要举String的例子,String比较特殊,有两种赋值方法,内存分配不同,后续学习。

可以创建Student类,创建两个对象,属性值完全相同,但是用==比较返回false。

说明比较的是虚地址。

另外,比较0.3==0.3f以及0.5==0.5f,理解==比较基本数据类型的原理

3java.lang包简介

java.lang包是java内置的一个基础包,其中包含了一系列程序中经常要用到的类;

在默认情况下,每个java程序都会自动导入该包,因此无需在程序中显式地声明。

String类

Java中,字符串是String类的对象;

Java中,String是引用数据类型;

可以通过使用String类提供的方法来完成对字符串的操作;

创建一个字符串对象之后,将不能更改构成字符串的字符;

每当更改了字符串版本时,就创建了一个新的字符串对象,并在其内包含所做的修改,原始字符串保持不变。

Strings1=“abc”;

s1=“def”;

修改s1的内容时,并不是直接将abc修改为def,而是在新的内存空间存储了def这个字符串内容,原始的abc保持不变。

因此,String被称为不可变类。

String类的构造方法

String类的构造方法共有13种重载方式,以下是常用的几个:

String类构造方法示例

publicclassStringDemo

{

publicstaticvoidmain(String[]args)

{

char[]aryChar={‘I','C',‘S',‘S'};

Stringstr1=“ETC";

//利用一个字符串常量值创建新的字符串

Stringstr2=newString(“ICSSETC");

//利用一个字符型数组创建新的字符串

Stringstr3=newString(aryChar);

System.out.println(str1);

System.out.println(str2);

System.out.println(str3);

}

}

可见,字符串除了使用new调用构造方法创建对象外,还可以使用=直接赋值。

正因为这点,很多初学者会把String类与int等同,作为基本数据类型看待。

实际上,String是一个引用类型。

字符串长度

String类中提供length成员方法,用来获得字符串的长度,方法原型:

intlength()

该方法返回字符串中有效字符的个数。

publicclassStringDemo

{

publicstaticvoidmain(String[]args)

{

Stringstr1="JohnSmith";

Stringstr2=newString("ILoveJava");

System.out.println(str1.length());

System.out.println(str2.length());

}

}

字符串比较

要判断两个字符串是否相等,可以使用“==”运算符和equals()方法,但是得到的结果可能不完全相同(String覆盖了Object类的equals方法);

==运算符用于比较两个引用是否指向同一个对象;

而equals()方法则是比较两个字符串中的内容是否相同,其原型:

booleanequals(ObjectanObject)

如果相等返回true,否则返回false。

其中覆盖equals方法可以在继承中再学习强调,此处只需要知道String可以调用equals方法即可

为了提高性能,JAVA在创建字符串时提供了有限制的池操作

publicstaticvoidmain(String[]args){

Stringstr1="123";

Stringstr2="123“;

System.out.println(str1==str2);

Stringstr3="234";

Stringstr4=newString("234");

System.out.println(str3==str4);

}

字符串比较示例

publicclassStringDemo{

publicstaticvoidmain(String[]args){

Stringstr1=“ICSS",str2=“ICSS";

Stringstr3=newString(“ETC"),str4=newString(“ETC");

if(str1==str2){

System.out.println("str1和str2指向同一字符串");}

else{

System.out.println("str1和str2分别指向不同字符串");}

if(str1.equals(str2)){

System.out.println("str1和str2的内容完全相同");}

else{

System.out.println("str1和str2的内容不相同");}

if(str3==str4){

System.out.println("str3和str4指向同一字符串");}

else{

System.out.println("str3和str4分别指向不同字符串");}

if(str3.equals(str4)){

System.out.println("str3和str4的内容完全相同");}

else{

System.out.println("str3和str4的内容不相同");}

}

}

充分了解用=为字符串赋值以及用new对字符串赋值的区别

=赋值是从实例池中查找,如果有相同内容的,即引用使用,否则就初始化并存储到实例池。

而new赋值,不管内容是否相同,都初始化一个新的字符串

字符串其它的比较方法

注意,字符串比较大小,即比较它们的字典顺序,不能使用><比较,而是使用compareTo方法。

字符串搜索

如果需要搜索某个字符(或某个子串)在字符串中是否出现过,这就要使用到indexOf方法和lastIndexOf方法。

 

字符串搜索示例

publicclassStringDemo

{

publicstaticvoidmain(String[]args)

{

StringstrEmail="java@";

intindex;

System.out.println("E-mail地址:

"+strEmail);

index=strEmail.indexOf('@');

System.out.println("@字符出现的索引:

"+index);

index=strEmail.indexOf("sun");

System.out.println("字符串\"sun\"出现的索引:

"+index);

index=strEmail.lastIndexOf('a');

System.out.println("a字符最后一次出现的索引:

"+index);

}

}

提取字符串

 

publicclassStringDemo

{

publicstaticvoidmain(String[]args)

{

Stringstr1="JavaisOOP";

Stringstr2=newString(“icss");

System.out.println(str1.charAt

(2));

System.out.println(str1.substring(5));

System.out.println(str1.substring(2,9));

System.out.println(str1.concat(str2));

System.out.println(str1+str2);

System.out.println(str1.replace('a','e'));

System.out.println(str1.trim());

}

}

更改字符串的大小写形式

有时候,我们需要将字符串中字符的大小写形式进行转换。

更改大小写形式示例

publicclassStringDemo

{

publicstaticvoidmain(String[]args)

{

Stringstr1="JavaisOOP";

Stringstr2;

str2=str1.toLowerCase();

System.out.println(str2);

str2=str1.toUpperCase();

System.out.println(str2);

}

}

数据格式转化

在某些特定的场合,我们可能需要将字符串转化成其它格式的数据进行操作;

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2