Java基础系列--01_基础类型
J2SE、J2ME、J2EE分别指什么?
	  J2SE 基础版,桌面应用。
	  J2ME 微型版,手机开发。(android,ios)
	  J2EE 企业版,所有浏览器访问的应用程序。
	    注意:JDK5以后改名
		      JavaSE,JavaME,JavaEE,J2SE是学习其他两门的基础。
JDK,JRE,JVM的作用及关系
	  JDK:用于开发java程序
	  JRE:用于保证java代码的执行
	  JVM:保证java语言跨平台(相当于是翻译官,但JVM本身是不跨平台的)
	  包含关系:JDK(JRE(JVM))
path,JAVA_HOME,ClassPath的理解
	  path:保证JDK目录下bin文件的.exe文件可以在任意的目录下打开,编译Java的源代码
	  JAVA_HOME:方便修改jdk的版本,而不需要重新修改path下的路径,防止意外修改的错误
	  ClassPath:让指定的class文件在任意目录都可以被访问。
			    在最左边配置一个.; ,这样做的好处就是能够先在当前目录下查找并执行。具体的配置,可以自己去百度看看
关键字:
	  const,goto是Java的保留字,未使用。
标识符:
	(1)对各种变量、方法和类等要素命名时使用的字符序列称为标识符。
		  由26个英文字母大小写,数字:0-9 符号:_ 和$ 组成
	(2)组成规则
		  A:标识符由字母、下划线“_” 、美元符“$”或数字组成。
		  B:标识符应以字母、下划线 、美元符开头,不能以数字开头。
		  C:不能和关键字重名。
		  D:名字不能使用空格隔开。
		  E:Java中严格区分大小写
	(3)常见的命名规则:
		  包:用于把同名的文件放到不同的目录下,全部小写,多级包用.分开
			    举例:java.nio.file(Files类所在的包)
		  类和接口:(驼峰命名)
			  每个单词的首字母大写
			    举例:类:InputStream(输入流)	接口:AutoStream(输入流实现的接口)
		  方法和变量:首字母小写,第二个单词的首字母大写
			    举例:方法:main(),toString()	变量:args,studentName
		  常量:全部大写,多个单词使用_隔开
			    举例:STUDENT_MAX_AGE
注释:
	  多行注释:/*注释内容*/
	  单行注释://注释内容
	注释的作用:对程序进行解释说明,还可以用于调试程序;或者可以提醒此处应当注意的问题
//固定格式,main方法是程序的入口
public static void main(String[] args){
//经典输出语句
System.out.println("helloWorld"); }
数据类型
基本类型:存储于栈中
   引用类型:变量名存储与栈中,地址值存储于堆中(方法存储于方法区中)
                                       
| 类型 | 字节 | 默认值 | 表示范围 | 
| byte | 1 | 0 | -28 ~ 28-1 | 
| short | 2 | 0 | -216 ~ 216-1 | 
| int | 4 | 0 | -232 ~ 232-1 | 
| long | 8 | 0l | -264 ~ 264-1 | 
| float | 4 | 0f | |
| double | 8 | 0 | |
| char | 2 | \u0000 | 0~65535(ASCII) | 
| bollean | ? | false | 
注意:
		    整数默认是int类型。long类型需要加L或者l后缀。
		    浮点数默认是double类型。float类型需要加F或者f后缀。
		官方声明“boolean类型的变量所占的字节并不确定。
boolean: The boolean data type has only two possible values: true and false. Use this data type for simple flags that track true/false conditions. This data type represents one bit of information, but its "size" isn't something that's precisely defined.
布尔类型:布尔数据类型只有两个可能的值:真和假。使用此数据类型为跟踪真/假条件的简单标记。这种数据类型就表示这一点信息,但是它的“大小”并不是精确定义的。
数据类型转换
	  (1)boolean类型不参与转换
	  (2)默认转换
		    A:从小到大
		    B:byte,short,char -- int -- long -- float -- double
		    C:byte,short,char之间不相互转换,直接转成int类型参与运算。
	  (3)强制转换
		    A:从大到小
		    B:可能会有精度的损失,一般不建议这样使用。
		    C:格式:
			      目标数据类型 变量名 = (目标数据类型) (被转换的数据);
  (4)注意事项:
		  A:float的表示
			    float f1 = 12.345f;
			    float f2 = (float)12.345;  //自身到自身,无区别
		  B:下面的程序的问题
byte b1 = 3;
byte b2 = 4;
//byte b3 = b1 + b2; //Type mismatch: cannot convert from int to byte(无法将int转换为byte)
//byte b3 = (byte)b1 + b2; //Type mismatch: cannot convert from int to byte(无法将int转换为byte)
byte b4 = 3 + 4;
/*解释:b1 + b2在参与运算的时候,首先会自动转换成int类型。
在这个时候,b1和b2其实都被提升了类型。
所以,他们的计算结果也应该是int类型。
最终,就相当于直接把int类型赋值给byte类型,所以,会有精度的损失。
如果参与运算的是常量,编译器会先计算值,在看该值是否是左边能够表示的范围。
如果是,就不报错。
*/
  
		  C:下面的操作结果是什么?
byte b0 = 127;
byte b1 = 130; //Type mismatch: cannot convert from int to byte
byte b2 = (byte)130;
byte b3 = (byte)300;
//计算机的运算都是通过数据的补码运算的,这一点很重要
System.out.println(b2); //?
System.out.println(b3); //?
程序解释:
byte b2 = (byte)130;
      数据:130默认是int类型(4字节,32位)的十进制数据。
				      第一步:十进制的130转换成二进制数据。
					        130 = 128 + 2
					        128 64 32 16 8 4 2 1
					        1   0  0  0  0 0 1 0
				      第二步:130在内存中的表示形式,做了截取(byte:1字节,8位)
					        00000000 00000000 00000000 10000010
					        截取后的结果是:10000010
				      第三步:二进制数据是10000010
					        通过观察,我们发现这是一个负数。
					        原码:1 0000010
					        反码:1 1111101
					        补码:1 1111110
				        最终的结果是:十进制的(-126)
						        1 1111110
    第二个:
			      byte b3 = (byte)300;[256+32+8+4]
				      二进制:
				        00000000 00000000 00000001 00101100
				        截取后:十进制的(44)
				        00101100
		  D:字符参与运算
			    将字符转换为ASCII所对应的值
			    如:'a'--97 'A'--65 '0'--48
				    键盘:0-9,A-Z,a-z   对应   ASCII:48-57 65-90 95-122
			  E:字符串参与运算:字符串前面与后面的+,表示字符串的连接
 System.out.println('a');    //a
 System.out.println('a' + 1);//
 System.out.println("hello"+'a'+1);    //helloa1
 System.out.println('a'+1+"hello");    //98hello
 System.out.println("5+5="+5+5);    //5+5=55
 System.out.println(5+5+"=5+5");    //10=5+5
Java基础系列--01_基础类型的更多相关文章
- Go基础系列:map类型
		
Go里的map用于存放key/value对,在其它地方常称为hash.dictionary.关联数组,这几种称呼都是对同一种数据结构的不同称呼,它们都用于将key经过hash函数处理,然后映射到val ...
 - Go基础系列:接口类型断言和type-switch
		
接口类型探测:类型断言 接口实例中存储了实现接口的类型实例,类型的实例有两种:值类型实例和指针类型实例.在程序运行过程中,接口实例存储的实例类型可能会动态改变.例如: // ins是接口实例 var ...
 - Python基础系列讲解—动态类型语言的特点
		
前言 在C语言中变量所分配到的地址是内存空间中一个固定的位置,当我们改变变量值时, 对应内存空间中的值也相应改变.在Python中变量存储的机制是完全不一样的,当给一个变量赋值时首先解释器会给这个值分 ...
 - PLSQL_基础系列01_正则表达REGEXP_LIKE / SUBSTR / INSTR / REPLACE(案例)
		
2014-11-30 Created By BaoXinjian
 - C#基础系列 - 反射基础
		
反射用于在程序运行过程中,获取类里面的信息或发现程序集并运行的一个过程.通过反射可以获得.dll和.exe后缀的程序集里面的信息.使用反射可以看到一个程序集内部的类,接口,字段,属性,方法,特性等信息 ...
 - Java 基础系列合集
		
Java基础知识你知道多少? Java特性 Java三大特性:封装,继承,多态 Java 抽象类与接口 Java 浅拷贝和深拷贝 Java static和final Java 内部类.静态内部类.匿名 ...
 - javascript基础系列(入门前须知)
		
-----------------------小历史---------------------------- javascript与java是两种语言,他们的创作公司不同,JavaScript当时是借 ...
 - Java编程系列文章序言
		
Java编程系列分为基础编程和高级编程两部分: 其中基础编程包括基础语法如变量和标识符,流程控制等,数组如一维数组二位数组等,及面向对象,异常处理: 高级部分多线程,常用类,注解,Java集合,泛型, ...
 - Java基础系列1:Java基本类型与封装类型
		
Java基础系列1:Java基本类型与封装类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括两 ...
 
随机推荐
- IIS web搭建之虚拟主机
			
IIS web搭建之虚拟主机 虚拟目录:能将一个网站的文件分散存储在同一个计算机的不同目录和其他计算机. 使用虚拟目录的好处: 1.将数据分散保存到不同的磁盘或者计算机上,便于分别开发和维护. 2.当 ...
 - centos7.3 kubernetes/k8s 1.10 离线安装 --已验证
			
本文介绍在centos7.3使用kubeadm快速离线安装kubernetes 1.10. 采用单master,单node(可以多node),占用资源较少,方便在笔记本或学习环境快速部署,不适用于生产 ...
 - ASP.NET Core 共享第三方依赖库部署的Bug(*.deps.json on 2.2.0 or 4.6.0 版本)
			
背景: I try to put the Microsoft.*.dll and System.*.dll togather to a new folder.以便把(第三方或)系统的和应用的dll分开 ...
 - 将博客搬至CSDN https://blog.csdn.net/Fredric_2014
			
将博客搬至CSDN https://blog.csdn.net/Fredric_2014
 - SUSE12SP3-Mycat(3)Server.xml配置详解
			
简介 server.xml 几乎保存了所有 mycat 需要的系统配置信息.其在代码内直接的映射类为 SystemConfig 类. user 标签 <user name="test& ...
 - 第1章 程序设计和C语言
			
1.1什么是计算机程序 程序,就是一组计算机能识别和执行的指令.每一条指令使计算机执行特定的操作.只要让计算机执行这个程序,计算机就会“自动地”执行各条指令,有条不紊地进行工作. 1.2什么是计算机语 ...
 - 用ASP.NET Core 2.1 建立规范的 REST API -- HATEOAS
			
本文所需的一些预备知识可以看这里: http://www.cnblogs.com/cgzl/p/9010978.html 和 http://www.cnblogs.com/cgzl/p/9019314 ...
 - Java的二分搜索树
			
定义 二分搜索树是二叉树(不包含重复元素). 二分搜索树的每个节点的值,大于左子树的所有节点的值,小于其右子树的所有节点的值. 每一棵子树也是二分搜索树. 二叉树搜索树必须要有比较,继承Compara ...
 - 前端笔记之服务器&Ajax(中)MySQL基础操作&PHP操作数据库&Ajax
			
一.数据库基础 1.1什么是数据库? 什么是数据库? 答:就是一个很大的一个文件,只不过这个文件可以通过一些‘命令’操作数据: 增.删.改.查数据: 数据库等于持久数据和数据操作的一个统称. 数据库是 ...
 - 搞懂MySQL InnoDB事务ACID实现原理
			
前言 说到数据库事务,想到的就是要么都做修改,要么都不做.或者是ACID的概念.其实事务的本质就是锁和并发和重做日志的结合体.那么,这一篇主要讲一下InnoDB中的事务到底是如何实现ACID的. 原子 ...