1. java-基本数据类型有哪几个
Java的基本数据类型在Java中,每个存放数据的变量都是有类型的,如:char ch;float x;int a,b,c;ch是字符型的,就会分配到2个字节内存。不同类型的变量在内存中分配的字节数不同,同时存储方式也是不同的。所以给变量赋值前需要先确定变量的类型,确定了变量的类型,即确定了数据需分配内存空间的大小,数据在内存的存储方式。1. Java中的数据类型Java中的数据类型有基本数据类型和引用数据类型两大类,图2-1呈现了Java中数据类型的概貌。图2-1 Java中的数据类型概貌本讲就基本数据类型进行讨论,引用数据类型将在下一篇中论述。以下讨论每一种数据类型时,对常量和变量作分别说明。所谓常量,就是直接的值;而变量则是放置常量的容器,除了放置常量之外,也可以给变量一个运算式,变量中的值是可变的。2. 布尔型—boolean布尔型又名逻辑型,它是最简单的数据类型,在流程控制时常会用到。有C++编程经验的学习者,要特别看清,Java中的布尔型数据不对应于任何整数值。布尔型常量:true和false。需要注意的是,布尔常量的组成字母一律都是小写的。 布尔型变量:以boolean定义的变量,如:boolean b = true; //定义变量b是boolean,且值为true3. 字符类型—char(1)字符常量字符常量指用单引号括起来的单个字符,如‘a’,‘A’。请特别注意,字符的定界符是单引号,而非双引号。除了以上所述形式的字符常量值之外,Java还允许使用一种特殊形式的字符常量值,这通常用于表示难以用一般字符来表示的字符,这种特殊形式的字符是以一个“\”开头的字符序列,称为转义字符。Java中的常用转义字符见表2-1。表2-1 Java中的转义字符转义字符 描述\ddd 1~3位八进制数所表示的字符(ddd)\uxxxx 1~4位十六进制数所表示的字符(xxxx)如‘\u0061’表示‘a’\’ \” 单引号字符和双引号字符\\ 反斜杠\r 回车\n 换行\t 横向跳格\f 走纸换页\b 退格(2)字符变量以char定义的变量,如char c='a';要特别加以说明的是,Java的文本编码采用Unicode集,Java字符16位无符号型数据,一个字符变量在内存中占2个字节。例1:编程测试十六进制数41、51对应的字符,并相隔一个tab位输出。分析:已知十六进制数,求字符。根据表2-1,可用'\uxxxx'的转义字符形式来表示所求字符,然后直接输出即可。[HDTest.java] class HDTest{ public static void main(String[] args){ char a='\u0041'; char b='\u0051'; System.out.println(a+" "+b); //字符之间以若干空格相间 } }程序运行结果:A Q4. 定点类型(整型)定点类型包括了字节型、整型、短整型和长整型,它们在内存中虽然占据的字节数互不相同,但它们的存储方式是同样的,所以这里把这些类型归并在一起讨论。“定点”的意思是把小数点定在末尾,小数点后没有数字的数据,Java中通常把它们称为整数。(1)定点常量定点常量是整型常数,它可用十进制、八进制、十六种进制三种方式来表示。ナ十进制定点常量:如123、-456、0。ナ八进制定点常量:以0前导,形式为0dd...d。如0123表示十进制数83,-011表示十进制数-9。ナ十六进制定点常量:以0x或0X开头,如0x123表示十进制数291,-0X12表示十进制数-18。(2)定点变量定点变量即整型变量,可细分成字节型变量、整型变量、短整型变量和长整型变量四种。表2-2对各种定点变量的开销内存字节数和数值范围作简要说明。表2-2 关于整型变量的说明 定点变量 占字节数 范 围字节型byte 1 [-128,127],即从-27~27-1短整型short 2 [-32 768, 32 767],即-215~215-1整型int 4 [-2 147 483 648, 2 147 483 647],即-231~231-1长整型long 8 -263~263-1需要注意的是,如果要将一定点常量赋值给一个定点变量,需要查验常量是否在该变量的表达范围内,如超出范围程序会编译出错。如:byte b = 200; //JCreator编译时错误信息是“可能损失精度”例2:阅读程序,分析其运行结果。[OHTest.java] class OHTest{ public static void main(String[] args){ int x = 010; System.out.println("x = "+ x); int y = 0x10; System.out.println("y = " + y); } }程序运行结果略,请思考并调试验证。5. 浮点型(实型)(1)浮点常量即带小数点的实型数值,可以由直接带小数点的数值和科学计数法两种形式来表示:ナ带小数点的数值形式:由数字和小数点组成,如0.123、.123、123.、123.0。ナ科学计数法表示形式:由一般实数和e±n(E±n)组成,如12.3e3、5E-3,它们分别表示12.3×103和5×10-3。需要注意的是,e或E之前必须有数字,且e或E后面的指数必须为整数。(2)浮点变量浮点变量有单精度变量和双精度变量之分,不同的精度开销的内存字节数和表达的数值范围均有区别。两种浮点变量占内存字节数和数值范围见表2-3。表2-3 单精度变量和双精度变量简要说明浮点变量 占字节数 范围单精度float 4 3.4e-038~3.4e+038,-3.4e+038~-3.4e-038 双精度double 8 1.7e-308~1.7e+308,-1.74e+038~-3.4e-038浮点常量也有单精度和双精度之分,前面列出的常量均是双精度常量,如果要特别说明为单精度常量,可以数据末尾加上f或F作为后缀,如12.34f。如果要特别指明一个浮点常量是双精度常量,数据末尾不需要添加后缀,或者在数据末尾加上d或D作为后缀,如12.34d。例3:输入一个圆的半径,求圆面积。分析:圆半径在编写程序时是不确定的,其值在程序运行时输入,这样程序就比较通用,可以处理不同半径的求面积和周长问题。这就涉及数据输入的问题,参照本讲第一节,输入数据通过Scanner扫描器解决。[CircleArea.java] import java.util.Scanner; class CircleArea{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); double r = sc.nextDouble(); double area = Math.PI * r * r; System.out.println(area); } }
2. java语言有几种数据类型怎样申明和赋值
一、基本数据类型
整型:byte、short、int、long (在计算机中以二进制补码格式存储)
浮点型:float、double (在计算机中以IEEE754格式存储)
字符型:char (在计算机中以unicode码格式存储)
布尔型:boolean (只有true和false两个值)
二、 1.长整型:long
定义:long a=100;int b=a; (编译出错)
给a重新赋值:long a=2147483648; (编译出错)
定义:long a=2147483648L;(正确,说明此时可以是long型的取值范围)
说明在long型的数据后不加L/l时,数据仍为long型,但其取值范围却是int型的取值范围;数据后加L/l时,取值范围才是long型的取值范围。
2.浮点型:long
定义:float a=19; 输出a时为19.0
定义:float a=19.1; (编译出错)
定义:float a=19.1f; (正确)
说明在 float型的数据后不加F/f,则数据不能有小数位,但输出时,能够输出一位小数;若在float型的数据后加上F/f,则数据可以有小数位;
三、类型转换(注:boolean型不会发生类型转换,基本类型和复合类型不能相互转换)
1.自动转换
1)赋值转换:用于短字节的数据类型转换成长字节的数据类型(byte型的数据不能转换成char型,short型和char型数据也不能相互转换)
2)单目运算符提升
++、——运算符不会自动提升,+(正)、-(负)会将byte、short、char型的数据自动转换成int型的数据
3)双目运算符提升
如果有一个操作数是double型的,则把另一个转换成double型;否则如果有一个操作数是float型的,则把另一个转换成float型;否则 如果有一个操作数是long型的,则把另一个转换成long型;否则两个操作数都转换成int型。
4)三目运算符<op1> ? <op2> : <op3>其中op1必须是boolean型的,而op2和op3两操作数必须是能够自动转换成相同类型的数据,op2和op3会自动提升为两操作数中字节较长的一个,并且结果为提升后的类型。
如:byte a1=20;
short a2=10;
boolean b=true;
short c = b ?
a1 : a2;
结果为short型的数据c
2.强制转换
例子:
int a;
byte b=(byte)a;
定义:a=-126;
(分析:int形的数据有4个字节,而byte形的数据只有1个字节,所以只取int型数据的最后一个字节)
a的原码: 10000000,00000000,00000000,01111110
补码: 11111111,11111111,11111111,10000010
法一:r=(10000010)=130 (此时将 10000010 看成是纯的二进制数去计算,而不考虑它的符号位); byte型数据范围〔-128,127〕,由于 r>127,所以 r=r-M (若整型数据值域[-L,R],则M=L+R+1),如果r还不在byte型数据的取值范围内,则继续 r=r-M 直至r在其取值范围内,取得r后,即为byte型的 b .此处r=-126,所以输出b为-126.
法二:直接将int型数据的最后一个字节看成是byte型数据的补码形式,在将补码转换成原码,即得到 b
四、逻辑运算符
1.&&和|| (&&的优先级要高于||的)
特点:只要左操作数已经得出整个表达式的值,就不再计算右操作数的之值,左右操作数必须为boolean型的。
例子:
boolean test1= ++x==-1 && ++x==1 || ++x=2;
boolean test2= ++y==-1 || ++y==1 && ++y=2;
System.out.println(x+" "+test1);
System.out.println(y+" "+test2);
结果:1 false
2 true
2.&和| (逻辑位运算符)
特点:先把两个操作数的值计算出来,然后再进行逻辑运算
int x=-1,y=-1;
boolean test1= ++x==-1 & ++x==1 | ++x=2;
boolean test2= ++y==-1 | ++y==1 & ++y=2;
System.out.println(x+" "+test1);
System.out.println(y+" "+test2);
结果: 2 false
2 true
五、移位运算
<< (左移)高位丢失、低位以0填充
>> (右移) 低位丢失、高位以符号位填充
>>> (无符号位右移) 低位丢失、高位以0填充
此运算符不会对左右两操作数作算术提升,但会对左操作数进行单独提升,若为byte、short、char、int型,则得到结果为int型,若为long型,则结果为long型,但左右操作数均不能为浮点型,否则出错。
当左操作数为int型时,右操作数的低5位才有用,这样可以防止移位超过int型所具有的位数,当左操作数为long型时,右操作数的低6位才有用。
例子:
int a=-2;
short b=-10;
int c=a>>b;
b的补码:11111111,11111111,11111111,11110110
取b的最后5位, r=(10110)=22;
a的补码:11111111,11111111,11111111,11111110
将a向右移动22位,再在高位补上1,得到 11111111,11111111,11111111,11111111 ,转换成原码得到 c=-1
六、赋值运算
1.简单赋值运算
表达式: <变量>=<表达式>
左操作数可以事先没有赋值
表达式的类型必须和变量的类型相同,或能赋值转换成变量的类型,
2.组合赋值运算
表达式:<变量> op= <表达式>
int a=10;
double b=23.3;
a*=b;
左操作数事先一定要赋值
左边的类型和右边的类型不一定要相同,此处a*b得到的是double型的,组合运算符会自动把double型的值转换成int型的值存入变量a中。
3. java中的数据类型
java中的数据类型分两大类分别是基本类型和引用数据类型。
一、基本类型
1)Java中的数据类型有八种,即基本类型。具体如下:
数据类型 位数 取值范围:
Boolean 1 True|False
Byte 8 -128~127
Short 16 -32768~32767
Int 32 -2e31~2e31-1
Long 64 -2e63~2e63-1
Float 32 略
Double 64 略
Char 16 0~65535
‘ /u0000’ ~’uFFFF‘
二、引用数据类型
1)定义一个byte变量 如:byte b= -256;
由于-256超出了’Byte’的取值范围,所以要使程序不报错,有一下几种解决方法:
A:更改变量的数据类型(如:将byte改为int);
B:更改变量名的赋值,使其包括在变量的数据类型的值域内;
C:进行强制转换:如: byte b=(byte)-256:
‘进行强制转换后,虽然程序不在报错,但是有可能会使原值的精度收到影响’
D:定义一个浮点类型数时,记得要在数值的后面加上“f”或“F”。(如:Float f=10000.0f;)
E:若定义 Char c=a;定义 int n=c;则输出的n值为“a“的ASCII值,即97。
2)引用数据类型的定义
A:对象都是引用数据类型
B:应用类型使用NEW调用构造方法进行赋值
C:在Java中,除了基本数据类型以外,其余的全都属于引用数据类型, 如:
a:API中的类,如String,File等;
b:数据;
c:自定义的类,如Cars,Student
d:对象全部是引用数据类型。
(3)javaboolean几个字节扩展阅读
其他数据类型:
在java中,String本身也提供了很多的方法供我们使用:
获取到指定索引位置的字符:char c = 字符串.charAt(索引位置);
获取到指定索引位置的字符:char c = 字符串.charAt(索引位置);
获取第一次出现在字符串中的字符:int index = 字符串.index('a');
获取在字符串中字符的索引位置:int index = 字符串.index('a',1);
如果想比较两个字符串是否相等:字符串.equeals(字符串);
判断字符串是否为空:字符串.isEmpty();
获取字符串的长度:字符串.length();
根据某一个条件,将字符串进行分割:字符串.split("abc");
根据条件取出内容:字符串.substring(开始位置,结束位置);
4. JAVA中8个数据类型的取值范围是多少
在JAVA中一共有八种基本数据类型,他们分别是
byte、short、int、long、float、double、char、boolean
整型:
其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样。
byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1);
short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1) ;
int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1) ;
long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1);
可以看到byte和short的取值范围比较小,而long的取值范围太大,占用的空间多,基本上int可以满足我们的日常的计算了,而且int也是使用的最多的整型类型了。
在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的 B:35B,表示它是byte型的,同样的35S表示short型,35L表示long型的,表示int我们可以什么都不用加,但是如果要表示long型的,就一定要在数据后面加“L”。
浮点型 :
float和double是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同 ;
float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节 ;
double 1.797693e+308~ 4.9000000e-324 占用8个字节 ;
double型比float型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double型的,如果要表示一个数据是float型的,可以在数据后面加上“F”。
浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。
boolean型(布尔型):
这个类型只有两个值,true和false(真和非真);
boolean t = true;
boolean f = false;
char型(文本型) :
用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容
字符的存储范围在u0000~uFFFF,在定义字符型的数据时候要注意加' ',比如 '1'表示字符'1'而不是数值1。
5. java有几种数据类型
基本数据类型
整数类型:
byte:字节占用 1字节 8位,用来表达最小的数据单位,储存数据长度为 正负 127;
short:字节占用 2字节 16位,储存数值长度为 -32768-32767
int:字节占用 4字节 32位,最为常用的整数类型,储存长度为,-2^31-1~2^31 (21 亿)
long:字节占用 8字节 64位,当到达int数值极限时使用,储存长度为 看图片: