志达IT
做快乐程序员

java学习路线(java的八种基本数据类型)

java学习路线

主张java学习道路如下:
第一阶段:Java根底。
第二阶段:数据库
第三阶段:JavaWeb
第四阶段:干流结构。
第五阶段:服务器中间件。
第六阶段:微服务和分布式。
第七阶段:练手项目。
下面简单给大家这几个阶段首要学习的内容:
第一阶段:Java根底
最开端要学习的是Java根底,学习了这部分,就会对Java语言有一个开始的了解。
这部分首要学习的内容有:根本程序结构,类与对象,接口,泛型,反射,集合,异常与调试,Java网络编程,JavaI/O和多线程。
第二阶段:数据库
MySQL和Oracle都是广受企业欢迎的数据库,其中MySQL是现在运用最广泛的开源关系数据库,关于新手或者校招的小伙伴,咱们现在只学习MySQL就可以了。
这部分首要学习的内容有:数据库的CRUD操作、JDBCAPI、数据库特性和数据库连接池。
其中,数据库连接池是为了避免频繁地创建和毁掉JDBC连接,常见连接池包含C3P0,Druid和HikariCP,现在运用最广泛的是HikariCP。
第三阶段:JavaWeb
学习JavaWeb,咱们不仅需求掌握后端Java技能,还需求学习些前端常识。
前端有三大根底技能Html、CSS和JavaScript,初学的话,学习这些就可以了。假如想做出更好的交互式效果,可以再学习Vue和React等前端技能。
后端Java技能包含Servlet、Filter、Listener、Session、Cookie、JSP、EL表达式和JSTL等。
其中,像JSP这样比较老的技能,现在在各大互联网公司根本不再运用,已经被Freemark、Thymeleaf这样的模板引擎所代替,咱们只需求了解根本运用即可。java
第四阶段:干流结构
这部分咱们要学习的干流结构首要有Spring、SpringMVC和MyBatis,俗称SSM结构。
从前的SSH结构,即Struts2、Spring、Hibernate结构,已经逐步被SSM代替,现在可以不必再学Struts2和Hibernate结构了。
学习这些结构之前,咱们先来学习项目办理利器Maven和Git。
Maven:
Maven是一个项目办理工具,它根据项目对象模型(POM)的概念,它可以办理项目的构建、报告和文档。
Maven本质便是一个巨大的jar包资源库,运用Maven构建项目,只需在项目的pom.xml中装备相关依靠后,就可以直接从长途仓库同步到本地,再也不必满世界查找下载jar包了,省了许多查找和下载的烦恼。
Git:
Git是一个开源的分布式版别控制系统,最大效果便是对文件进行版别办理,便利在不同版别进行切换修改,还可以很便利的协作开发。
GitHub是根据Git的代码库托管站,学会了Git,咱们就能愉快地上Github交友了。
喜欢文字版的小伙伴,引荐看廖雪峰的Git教程,很浅显易懂
便利查阅的Git中文手册:Git-Book
SSM结构:
Spring是一个轻量级的Java开发结构,现在已经是最受欢迎的企业级Java运用程序开发结构。
Spring结构的核心特性是依靠注入(DI)与面向切面编程(AOP),Spring结构的组成结构图如下所示:
SpringMVC是一个根据MVC架构,用来简化web运用程序开发的结构,它是Spring的一部分,SpringMVC已经成为现在最干流的MVC结构之一。
MyBatis是一款优异的持久层结构,它支持自界说SQL、存储过程以及高级映射。
在运用传统JDBC时,往往需求写许多JDBC代码,需求自己写SQL句子以及自己装配参数,然后自己对成果集进行封装处理。
而Mybatis则帮咱们简化了以上功用,只需求一些装备文件(xml)或是注解即可完结对数据库的查询以及成果的映射封装。
学习SSM结构,引荐运用一整套课程进行学习,会有更好的连贯性,并且还会学习整合SSM结构。
整合SSM结构仍是比较繁琐的,库森之前学习时就整合了一天,时间紧张的小伙伴可以不必在整合这里花费时间,因为这种整合方式现在也不在流行了,现在直接运用更强大的利器SpringBoot就可以了。
SpringBoot:
SpringBoot选用约好大约装备的方式,许多的减少了装备文件的运用,从而使开发人员不再需求界说样板化的装备。
那要不要越过了SSM直接去学习SpringBoot呢?
假如仅仅为了运用SpringBoot,当然可以越过,毕竟SSM装备太繁琐了。
假如想深化学习,尤其是找Java开发的工作,面试中会出现许多Spring的底层问题,因此仍是要学习SSM的,假如越过了不利于学习原理。
第五阶段:服务器中间件
学完上面的内容,咱们已经具有实践项目的开发能力了,但是要处理些杂乱的事务场景,咱们还要学习Redis、MQ、Elasticsearch这些中间件。
Redis:
Redis是一个key-value存储系统,是跨渠道的非关系型数据库,可用作数据库,高速缓存和音讯行列代理。
Redis作为当下干流的缓存技能,已经成为互联网企业的不贰首选。
Redis规划与实现在线版:Redis规划与实现—Redis规划与实现
查询Redis命令的中文网站:Redis中文教程
MQ:
MQ(MessageQueue)是一种跨进程的通讯机制,用于传递音讯。浅显点说,便是一个先进先出的数据结构。MQ有三大首要效果分别为解耦、异步、削峰/限流。
Elasticsearch:
全文查找属于最常见的需求,开源的Elasticsearch是现在全文查找引擎的首选。
它可以快速地贮存、查找和分析海量数据。维基百科、StackOverflow、Github都选用它。
Elasticsearch的底层是开源库Lucene。但是,有必要自己写代码去调用Lucene的接口。Elastic是Lucene的封装,提供了RESTAPI的操作接口,开箱即用。
关于实习和校招的小伙伴来讲,学好前五阶段的技能常识,再深化学习个技能点就可以了,假如还有时间和精力的小伙伴,可以学习微服务和分布式的内容。
第六阶段:微服务和分布式
SpringCloud
SpringCloud是一套完好的微服务处理方案,根据SpringBoot结构。
准确的说,SpringCloud是一系列结构的有序集合,它利用SpringBoot的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追寻等。
Dubbo:
值得一提的是,还有阿里开源Dubbo,Dubbo一个高性能优异的服务结构。简单地说,Dubbo是一个根据Spring的RPC(长途过程调用)结构,可以实现服务的长途调用、服务的治理。
ZooKeeper:
ZooKeeper是一个高可用的分布式办理与和谐结构,根据ZAB算法(原子音讯播送协议)的实现。该结构可以保证分布式环境中数据的一致性,使得ZooKeeper成为了处理分布式一致性问题的利器。

java的八种基本数据类型

Java根本类型共有八种,根本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中的数值类型不存在无符号的,它们的取值规模是固定的,不会跟着机器硬件环境或者操作体系的改变而改变。实际上,JAVA中还存在别的一种根本类型void,它也有对应的包装类java.lang.Void,不过咱们无法直接对它们进行操作。8中类型表明规模如下:java
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类型。
如:
1
2
floatf;
f=1.3f;//有必要声明f。
字符常量:字符型常量需用两个单引号括起来(留意字符串常量是用两个双引号括起来)。Java中的字符占两个字节。一些常用的转义字符:
①\r表明接受键盘输入,相当于按下了回车键;
②\n表明换行;
③\t表明制表符,相当于Table键;
④\b表明退格键,相当于BackSpace键;
⑤\’表明单引号;
⑥\”表明双引号;
⑦\\表明一个斜杠\。
3.数据类型之间的转化
1).简略类型数据间的转化,有两种办法:主动转化和强制转化,一般发生在表达式中或办法的参数传递时。
主动转化
详细地讲,当一个较”小”数据与一个较”大”的数据一同运算时,体系将主动将”小”数据转化成”大”数据,再进行运算。而在办法调用时,实际参数较”小”,而被调用的办法的形式参数数据又较”大”时(若有匹配的,当然会直接调用匹配的办法),体系也将主动将”小”数据转化成”大”数据,再进行办法的调用,天然,关于多个同名的重载办法,会转化成最”接近”的”大”数据并进行调用。这些类型由”小”到”大”分别为(byte,short,char)–int–long–float—double。这里咱们所说的”大”与”小”,并不是指占用字节的多少,而是指表明值的规模的巨细。
①下面的句子可以在Java中直接经过:
1
2
3
4
5
byteb;
inti=b;
longl=b;
floatf=b;
doubled=b;
②假如低级类型为char型,向高档类型(整型)转化时,会转化为对应ASCII码值,例如
1
2
3
4
charc=’c’;inti=c;
System.out.println(“output:”+i);
输出:output:99;
③关于byte,short,char三种类型而言,他们是平级的,因而不能彼此主动转化,可以运用下述的强制类型转化。
1
2
3
4
5
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型时:
1
2
3
floatf1=100.00f;
FloatF1=newFloat(f1);
doubled1=F1.doubleValue();//F1.doubleValue()为Float类的回来double值型的办法
②当期望把double型转化为int型时:
1
2
3
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办法
1
2
3
4
5
6
7
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,栈空间;

赞(0)
未经允许不得转载:志达IT网站 » java学习路线(java的八种基本数据类型)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

志达IT网站 每天分享编程和互联网的IT技术博客

登录/注册联系我们