java的八种基本数据类型
1.Java的八大底子数据类型
Java底子类型共有八种,底子类型能够分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又能够分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值规划是固定的,不会跟着机器硬件环境或许操作系统的改动而改动。实践上,JAVA中还存在另外一种底子类型void,它也有对应的包装类java.lang.Void,不过我们无法直接对它们进行操作。8中类型标明规划如下:
byte:8位,最大存储数据量是255,存放的数据规划是-128~127之间。
short:16位,最大数据存储量是65536,数据规划是-32768~32767之间。
int:32位,最大数据存储容量是2的32次方减1,数据规划是负的2的31次方到正的2的31次方减1。
long:64位,最大数据存储容量是2的64次方减1,数据规划为负的2的63次方到正的2的63次方减1。
float:32位,数据规划在3.4e-45~1.4e38,直接赋值时有必要在数字后加上f或F。
double:64位,数据规划在4.9e-324~1.8e308,赋值时能够加d或D也能够不加。
boolean:只需true和false两个取值。
char:16位,存储Unicode码,用单引号赋值。
Java决议了每种简略类型的大小。这些大小并不跟着机器结构的改变而改变。这种大小的不可更改正是Java程序具有很强移植能力的原因之一。下表列出了Java中定义的简略类型、占用二进制位数及对应的封装器类。
简略类型
boolean
byte
char
short
Int
long
float
double
void
二进制位数
1
8
16
16
32
64
32
64
—
封装器类
Boolean
Byte
Character
Short
Integer
Long
Float
Double
Void
关于数值类型的底子类型的取值规划,我们无需强制去回忆,因为它们的值都现已以常量的方法定义在对应的包装类中了。如:
底子类型byte二进制位数:Byte.SIZE最小值:Byte.MIN_VALUE最大值:Byte.MAX_VALUE
底子类型short二进制位数:Short.SIZE最小值:Short.MIN_VALUE最大值:Short.MAX_VALUE
底子类型char二进制位数:Character.SIZE最小值:Character.MIN_VALUE最大值:Character.MAX_VALUE
底子类型double二进制位数:Double.SIZE最小值:Double.MIN_VALUE最大值:Double.MAX_VALUE
留心:float、double两种类型的最小值与Float.MIN_VALUE、Double.MIN_VALUE的值并不相同,实践上Float.MIN_VALUE和Double.MIN_VALUE分别指的是float和double类型所能标明的最小正数。也就是说存在这样一种状况,0到±Float.MIN_VALUE之间的值float类型无法标明,0到±Double.MIN_VALUE之间的值double类型无法标明。这并没有什么好古怪的,因为这些规划内的数值超出了它们的精度规划。
Float和Double的最小值和最大值都是以科学记数法的方法输出的,完毕的”E+数字”标明E之前的数字要乘以10的多少倍。比如3.14E3就是3.14×1000=3140,3.14E-3就是3.14/1000=0.00314。
Java底子类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包装类的实例方针。从Java5.0(1.5)初步,JAVA虚拟机(JavaVirtualMachine)能够完毕底子类型和它们对应包装类之间的自动转化。因此我们在赋值、参数传递以及数学运算的时分像运用底子类型相同运用它们的包装类,但这并不意味着你能够通过底子类型调用它们的包装类才具有的方法。另外,全部底子类型(包含void)的包装类都运用了final修饰,因此我们无法承继它们扩展新的类,也无法重写它们的任何方法。
底子类型的优势:数据存储相对简略,运算功率比较高
包装类的优势:有的简略,比如集结的元素有必要是方针类型,满足了java全部皆是方针的思维
2.Java中的常量
十六进制整型常量:以十六进制标明时,需以0x或0X开始,如0xff,0X9A。
八进制整型常量:八进制有必要以0开始,如0123,034。
长整型:长整型有必要以L作完毕,如9L,342L。
浮点数常量:因为小数常量的默认类型是double型,所以float类型的后边一定要加f(F)。同样带小数的变量默以为double类型。
如:
floatf;
f=1.3f;//有必要声明f。
字符常量:字符型常量需用两个单引号括起来(留心字符串常量是用两个双引号括起来)。Java中的字符占两个字节。一些常用的转义字符:
①\r标明接受键盘输入,相当于按下了回车键;
②\n标明换行;
③\t标明制表符,相当于Table键;
④\b标明退格键,相当于BackSpace键;
⑤\’标明单引号;
⑥\”标明双引号;
⑦\\标明一个斜杠\。
3.数据类型之间的转化
1).简略类型数据间的转化,有两种方法:自动转化和强制转化,通常发生在表达式中或方法的参数传递时。
自动转化
详细地讲,当一个较”小”数据与一个较”大”的数据一起运算时,系统将自动将”小”数据转化成”大”数据,再进行运算。而在方法调用时,实践参数较”小”,而被调用的方法的方法参数数据又较”大”时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将”小”数据转化成”大”数据,再进行方法的调用,天然,关于多个同名的重载方法,会转化成最”挨近”的”大”数据并进行调用。这些类型由”小”到”大”分别为(byte,short,char)–int–long–float—double。这儿我们所说的”大”与”小”,并不是指占用字节的多少,而是指标明值的规划的大小。
①下面的语句能够在Java中直接通过:
byteb;
inti=b;
longl=b;
floatf=b;
doubled=b;
②假设初级类型为char型,向高档类型(整型)转化时,会转化为对应ASCII码值,例如
charc=’c’;inti=c;
System.out.println(“output:”+i);
输出:output:99;
③关于byte,short,char三种类型而言,他们是平级的,因此不能互相自动转化,能够运用下述的强制类型转化。
shorti=99;
charc=(char)i;
System.out.println(“output:”+c);
输出:output:c;
强制转化
将”大”数据转化为”小”数据时,你能够运用强制类型转化。即你有必要选用下面这种语句格式:intn=(int)3.14159/2;能够想象,这种转化必定可能会导致溢出或精度的下降。
2)表达式的数据类型自动进步,关于类型的自动进步,留心下面的规则。
①全部的byte,short,char型的值将被进步为int型;
②假设有一个操作数是long型,核算结果是long型;
③假设有一个操作数是float型,核算结果是float型;
④假设有一个操作数是double型,核算结果是double型;
例,byteb;b=3;b=(byte)(b*3);//有必要声明byte。
3)包装类过渡类型转化
一般状况下,我们首要声明一个变量,然后生成一个对应的包装类,就能够运用包装类的各种方法进行类型转化了。例如:
①当希望把float型转化为double型时:
floatf1=100.00f;
FloatF1=newFloat(f1);
doubled1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法
②当希望把double型转化为int型时:
doubled1=100.00;
DoubleD1=newDouble(d1);
inti1=D1.intValue();
简略类型的变量转化为相应的包装类,能够运用包装类的结构函数。即:Boolean(booleanvalue)、Character(charvalue)、Integer(intvalue)、Long(longvalue)、Float(floatvalue)、Double(doublevalue)
而在各个包装类中,总有形为××Value()的方法,来得到其对应的简略类型数据。运用这种方法,也能够完成不同数值型变量间的转化,例如,关于一个双精度实型类,intValue()能够得到其对应的整型变量,而doubleValue()能够得到其对应的双精度实型变量。
4)字符串与其它类型间的转化
其它类型向字符串的转化
①调用类的串转化方法:X.toString();
②自动转化:X+””;
③运用String的方法:String.volueOf(X);
字符串作为值,向其它类型的转化
①先转化成相应的封装器实例,再调用对应的方法转化成其它类型
例如,字符中”32.1″转化double型的值的格式为:newFloat(“32.1”).doubleValue()。也能够用:Double.valueOf(“32.1″).doubleValue()
②静态parseXXX方法
Strings=”1”;
byteb=Byte.parseByte(s);
shortt=Short.parseShort(s);
inti=Integer.parseInt(s);
longl=Long.parseLong(s);
Floatf=Float.parseFloat(s);
Doubled=Double.parseDouble(s);
③Character的getNumericValue(charch)方法
5)Date类与其它数据类型的互相转化
整型和Date类之间并不存在直接的对应联络,仅仅你能够运用int型为分别标下一年、月、日、时、分、秒,这样就在两者之间建立了一个对应联络,在作这种转化时,你能够运用Date类结构函数的三种方法:
①Date(intyear,intmonth,intdate):以int型标下一年、月、日
②Date(intyear,intmonth,intdate,inthrs,intmin):以int型标下一年、月、日、时、分
③Date(intyear,intmonth,intdate,inthrs,intmin,intsec):以int型标下一年、月、日、时、分、秒
在长整型和Date类之间有一个很幽默的对应联络,就是将一个时间标明为间隔格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。关于这种对应联络,Date类也有其相应的结构函数:Date(longdate)。
获取Date类中的年、月、日、时、分、秒以及星期你能够运用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也能够将其理解为将Date类转化成int。
而Date类的getTime()方法能够得到我们前面所说的一个时间对应的长整型数,与包装类相同,Date类也有一个toString()方法能够将其转化为String类。
有时我们希望得到Date的特定格式,例如20020324,我们能够运用以下方法,首要在文件初步引进,
importjava.text.SimpleDateFormat;
importjava.util.*;
java.util.Datedate=newjava.util.Date();
//假设希望得到YYYYMMDD的格式
SimpleDateFormatsy1=newSimpleDateFormat(“yyyyMMDD”);
StringdateFormat=sy1.format(date);
//假设希望分隔得到年,月,日
SimpleDateFormatsy=newSimpleDateFormat(“yyyy”);
SimpleDateFormatsm=newSimpleDateFormat(“MM”);
SimpleDateFormatsd=newSimpleDateFormat(“dd”);
Stringsyear=sy.format(date);
Stringsmon=sm.format(date);
Stringsday=sd.format(date);
总结:只需boolean不参加数据类型的转化
(1).自动类型的转化:a.常数在表数规划内是能够自动类型转化的
b.数据规划小的能够自动数据类型大的转化(留心特例)
int到float,long到float,long到double是不会自动转化的,否则将会丢掉精度
c.引用类型能够自动转化为父类的
d.底子类型和它们包装类型是能够彼此转化的
(2).强制类型转化:用圆括号括起来方针类型,置于变量前
4.Java引用类型
Java有5种引用类型(方针类型):类接口数组枚举标注
引用类型:底层结构和底子类型不同较大
JVM的内存空间:(1).Heap堆空间:分配方针newStudent()
(2).Stack栈空间:临时变量Studentstu
(3).Code代码区:类的定义,静态资源Student.class
eg:Studentstu=newStudent();//new在内存的堆空间创立方针
stu.study();//把方针的地址赋给stu引用变量
上例完成进程:a.JVM加载Student.class到Code区
b.newStudent()在堆空间分配空间并创立一个Student实例;
c.将此实例的地址赋值给引用stu,栈空间;
java开发工资一般多少
因为近两年移动互联网的敏捷崛起,各个企业急需Java后端开发人员,因而Java后端开发人员的薪酬也在逐年上涨中而且有很多大厂公司,例如京东、百度、阿里都在急需Java后端开发人员。据猎豹统计数据显示,java后端开发薪酬范围在12-100K之间,其间薪资在12-15K的范围内占比11%,薪资在30-50K的范围内占比23.%,薪资在15-20K的范围内占比18%,薪资在20-30K之间的范围内占比17%,薪资在50-100K之间的范围内占比13.%。
该数据来源于猎豹网站
依照作业年限进行区分
下图中依照1年以下、1-3年、3-5年、5年以上、均匀等维度进行了统计、比照:
从上图中可以了解:
作业年限在1年以下,月薪在17K左右;
作业年限在1-3年左右,月薪在19K左右;
作业年限在3-5年左右,月薪在33K左右;
作业年限在5年以上,月薪在47K左右;
均匀月薪在23K左右。
依照学历进行区分
从学历来看,本科及以上学历,Java后端开发人员月薪在24K左右;专科学历,月薪在13K左右,均匀月薪在23K左右。
该数据来源于猎豹网站
依照地域进行区分
下图对北京、上海、广州、深圳、杭州五个大型城市的均匀薪资进行了比照:
该数据来源于猎豹网站
其间北京区域均匀薪酬在39k左右;
上海区域均匀薪酬在32k左右;
广州区域均匀薪酬在16k左右;
深圳区域均匀薪酬在31k左右;
杭州区域均匀薪酬在26k左右。
java后端开发人员岗位要求
精通JavaEE相关技能和结构内容,熟悉运用MYsql以及Unix/Linux操作系统;可以熟练运用H5、js、jquery等技能,而且具有杰出的结构、模块设计能力和建模经验。