java SE 入门之八大内置基本类型(第二篇)
本文采用eclipse 工具演示,如果您对eclipse 工具不了解,请先学习下 eclipse 工具的使用,这个里面只是简单的介绍下输出和注释;
安装完成eclipse 以后,双击进入 后一次点击 file -->new project 在出来的框上点击

输入项目名称,选择你安装eclipse 之前安装的jdk 的jre,本文使用1.8进行演示。然后点击finish 完成创建项目。

在完成(finish)的页面中我们输入如下代码,然后仔细阅读图片上的文字,看下图
public static void main(String[] args ) {
System.out.println("HelloWord");
}

 、
、
在java 中很多符号都是成对出现的,比如 (),{},【】,“”,‘’等,其中双引号代表字符串,后续会单独讲解。闲话少说,咱们开始学习java中的八大基本类型,
在java 中有八个基本类型,他们都是值类型,分别是 long, int, short,byte ,double float,boolean char 。其中 long, int, short,byte 为整数型。
其实这八个类型叫基本类型,在java 中只有两种类型,基本类型和引用类型. 值类型是存储在内存堆栈上的.
如下图

在学习八大基本类型前,我们应当学习下计算机的机器语言 二进制
在计算机内部,所有信息都是采用二进制表示,每个二进制有0和1两种状态,一个字节有8位,也就是说由8个0或者1组合而成。一个short 类型为连个字节,也就是16位,那么表示为 00000000 00000110,
int 类型同理,int l类型为32位4字节,表示形式为 00000000 00000000 00000000 00000110,
很多编程的人,都知道数学或者代数上的十进制,那么十进制是怎么转换为二进制的呢?。
十进制转换二进制
规则: 除以2取余 ,逆序输出,直到除数为小数的时候为止。位数不够补0
如十进制6二进制输出转换方式如下
6除以2=3余0
3除以2=1余1
1除以2=1余1
那么逆序的结果为:110.
二进制转换成为十进制
规则:取出二进制的最后一位,从2的0次方开始乘,将得到的结果相加就为十进制。
如二进制的110十进制换算。
0乘以2的0次方等于0,
1乘以2的一次方等于2,
1乘以2的平方(二次方)=4
则110的十进制为 0+2+4=6.
8大内置基本类型在java 中如何定义和使用的
变量
在说类型使用之前,我们要想学习下java 的类型定义规则,在java 中不允许使用未赋值的类型。定义一个类型,在使用之前必须给他赋值,赋值使用等号定义变量结束使用分号结尾,分号代表一行代码的结束。
如果不赋值会报如下错误信息
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The local variable a may not have been initialized
必须要赋值才能使用。
我们定义的类型语法如下:
类型 名字 = 值;如 int i=5; long j = 100 ,int a,b=100,这里的变量a 声明了,但是没有赋值,这里的b声明了赋值100,
在java中变量只能以字母,下划线和美元符号开头,不能以数字开头。
int 7a=67;这种写法是错误的。
这种声明叫定义变量,变量是可以在使用过程中从新赋值的。
如
int a=0;
		 a=100;
变量的作用域
作用域指的是大括号,打括号里面定义的变量,在大括号外面就无法访问,但是在大括号外面定义的,可以在大括号里面访问,
根据变量的位置,我们分为局部变量和成员变量。
.成员变量:在类体中,方法体之外声明的变量 。也有些不规范的叫法,从其他语言延伸过来的,叫全局变量,
局部变量:在方法体中出现的变量,包括方法的形式参数列表
1.long 类型
long 类型在内存中占有8个字节,二进制表示需要64位。
我们定义一个long 类型进行输出。
long i=5;
long i=5;
System.out.println(i);

long b=7L; 和long a=7;的输出结果是一致的,那有什么区别呢?
第一个直接定义一个长整形 b并且赋值长整形7 ,第二个是定义一个长整形 a ,并且赋值一个整形7,整形值7进行了 自动转换
自动转换定义:小类型转换到大类型的转换叫自动转换。大类型到小类型的转换叫强制类型转换。
好比一桶水倒入水缸里,水缸能装下,这就叫做自动转换,反之水桶装不下水缸的水,所以叫做强类型转换.
强制类型转换的语法事列 ; int b=(int)i;用一个英文的圆括号括起来。强制转换 当short byte char int进行混合运算时先转化为int在计算。这句话很重要,
如:
short s = 11;
s = (short) (s + 10);//short + int
s += 10;// --> s = s+10;
其实s 是在内存中的操作是先转换成为整形int 在计算的.
如果要给一个长整形赋值,我们要在值得末尾加上 一个字母L,这个字母是不区分大小写的。但是建议大写,因为小写字母很容易给开发人员造成混淆。这也是一种编码规范吧..这个L叫做类型缩写.
2 int
int 是4个字节,用二进制表示为32位。
用法等同long 不予演示。
前面我们讲解了二进制,我们在这里学习点新的东西,
在计算机中,不单单是只有二进制和十进制的。还有八进制和十六进制两种,不管是8进制,10进制还是16进制,最后在计算机执行过程中,最后都是需要转换成为二进制的。
int num1 = 10;//十进制
		int num2 = 010;//八进制
		int num3 = 0x10;//十六进制
System.out.println(num1);//10
			System.out.println(num2);//8
			System.out.println(num3);//16
他们的输出结果分别是 10,8,16. ,当然他们也可以用在ilong short byte 整形类型上。
 
 2.1表现方式(3种)
 十进制        默认
 八进制	  以0开头
 十六进制   以0x开头
如  long n=010L;
3. short
short 是两个字节 用二进制表示需要 十六位。
当我们在编译器 定义一个short n=100; System.out.println(n);的时候,是可以输出的。
难道 short 就没有什么特别的地方吗?
如果是细心的人,会看到前边讲解long 类型的时候 “自动转换”和“强制转换”的定义。可是现在100是int 类型,100是大类型,大类型到小类型是需要强制类型转换的,可是我这没有进行强制类型转换,也可以输出,难道是工具坏掉了??
其实不是,这个是java 中的一个规定。
在byte,short,char的取值范围内,int可以直接复制给byte,short、char
4 byte 类型
byte 在内存中占用一个字节 ,二进制表示要8位.
那么byte 类型有什么特殊的呢?
byte 类型在 -128到正的127之间,含边界。总共跨度256,看到256如果计算机基础好的人,一定会很熟悉,256,255 是不是内存的存储单元啊。
上边我们学习过了,如果是 byte 类型取值区间内,可以直接赋值int .那超出区间可以赋值吗,下边我就来试试
当在编译器一写 byte a=133得时候直接报错.

有人会说了,自动赋值不行,那就强制转换,那我们强制转换试试.

int a=128;
		 byte b=(byte)a;
	    System.out.println(b);
当我们输入这几行代码的时候,发现运行结构变成-128了,这叫精度丢失,就是大类型转换成为小类型的时候,会造成精度丢失..
到现在为止4个整形,我们就学习完成了,下边我们学习下两个小数类型
5. double 和folat
其实double 和folat 应当分开演练的,个人认为分开没有放在一起对比去讲解要好.
double 8字节,用二进制表示为64位,folat 4字节,用二进制表示为32位.其中double 叫双精度浮点型,而float叫单精度浮点型.这是他们的名字,他们都是小数类型。
根据前面的学习经验,我们先赋值小数试试,

会发现double 是可以直接赋值小数的,但是float是不可以直接赋值的。那可不可以像long 类型那样直接赋值带缩写的值呢。答案是肯定的.
double d=3.99d;//直接赋值
		 float f=3.14f;//直接赋值
这个d 和f 是不区分大小写的,但是建议小写,因为这也是一个不成文的规矩,一个默认规范。
下面我么再来看一组事列:


我们会发现,第一个变量d我们直接赋值一个整形数字3,但是输出的结果是 3.0,也就是说,double 直接赋值的时候,自动转换时给我们默认转换成为了小数。
而第二个变量f我们是先强制转换在赋值.
6.boolean
boolean型 有且只有两个值,值 true 表示真,值 false 表示假, 一般出现在判断语句中.
boolean sex = false;
if(sex){
			System.out.println("男");
		}else{
			System.out.println("女");
		}
当打印输出的时候,我们会发现输出的是“女”,其中if判断语句,这个以后会细说。
7 char类型
要学习char 类型我们必须要先了解什么是字符编码
7.1 java中的字符编码
     ASCII编码    主要 针对英文 
    ISO-8859-1 有人称为 latin-1,是国际化标准或组织ISO定制的,主要是为了西欧语言和ASCII码兼容。
   GB2312现代中文汉字,    GBK  中文汉字,GB!8030 台湾或者繁体字 ,这三种编码主要是针对汉字,从容量上看,他们属于包含关系。
   UinCOde 统一了世界上所有的编码,从展现形式上和UInCode的实现上,可以分为 UTF-8,UTF-16和UTF-32
*  java中的char  字符型   采用UNICODE编码 ,底层占2个字节
 *  字母占1个字节
 *  汉字占2个字节  
 那么char 类型是几个字节多少位的呢,其实char 在java 中是两个字节16位,有兴趣的基友可以研究下,下边的代码,这里不做解释,后期会讲解这个。

下边我们来学习下 char 类型的特性

当你在eclipse上练习这几行代码的时候,你会发现,当输出变量a的时候是争取的,但是当输出变量ab的时候会报错,这是因为ab 在uincode中没有叫ab的编码 。
但是当输出变量c的时候,得到的结果是字母"a",这是因为,前面我已经说过了,看图。
限期,我们只需要记住如下 
 *  0 的int值为 48
 *  a 的int值为 97  
 *  A 的int值为 65
我们再来看下下边的代码:

当输出变量c我们已经知道了,是取值区间可以直接赋值。
那输出变量i 是为什么呢?是因为把char转换成为int 是走的自动转换.
第三个,有的基友会矛盾了,不是在取值区间,可以直接赋值给变量num1吗?,可是为什么要加强制类型转换呢.你是把数字98赋值给了一个整形变量,可是这个变量的值是不变的吗?文章开头部分介绍了变量,这里在从新说下。System.out.Println("10");,//这个10叫做字面值,而我们定义的int num=98,这个num叫做变量,变量的值可以改变的。所以需要强制类型转换.
自此,我写的第一篇博客,已经完成了,后续会一到三个月更新一次。个人打算把这七年来的工作经验,从入门到精通,完全写下来.如有描述错误,清联系本人,告知改正.
在此总结下:
1)四种整数类型(byte、short、int、long):
byte:8 位,用于表示最小数据单位,如文件中数据,-128~127
short:16 位,很少用,-32768 ~ 32767
int:32 位、最常用,-2^31-1~2^31 (21 亿)
long:64 位、次常用 注意事项: int i=5; // 5 叫直接量(或字面量或字面值),即 直接写出的常数。 整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L或 l建议使用大写L。 小于 32 位数的变量,都按 int 结果计算。 强转符比数学运算符优先级高。
2)两种浮点数类型(float、double):
float:32 位,后缀 F 或 f,1 位符号位,8 位指数,23 位有效尾数。
double:64 位,最常用,后缀 D 或 d,1 位符号位,11 位指数,52 位有效尾
注意事项: 二 进 制 浮 点 数 : 1010100010=101010001.0*2=10101000.10*2^10(2次方)=1010100.010*2^11(3次方)= . 1010100010*2^1010(10次方) 尾数: . 1010100010 指数:1010 基数:2 浮点数字面量默认都为 double 类型,所以在定义的 float 型数据后面加F 或 f;double 类型可不写后缀,但在小数计算中一定要写 D 或 X.X float 的精度没有 double高,有效位数(尾数)短。 float 的范围大于 long 指数可以很大。 浮点数是不精确的,不能对浮点数进行精确比较。
3)一种字符类型(char): char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535) 。 注意事项: 不能为 0个字符。 转义字符:\n 换行 \r 回车 \t Tab 字符 \" 双引号 \\ 表示一个\ 两字符 char 中间用“+”连接,内部先把字符转成 int 类型,再进行加法运算,char 本质就是个数!二进制的,显示的时候,经过“处理”显示为字符。
4)一种布尔类型(boolean):true 真 和 false 假,有且只有这两个值。
5)记忆:8位:Byte(字节型) 16位:short(短整型)、char(字符型) 32位:int(整型)、float(单精度型/浮点型) 64位:long(长整型)、double(双精度型) 最后一个:boolean(布尔类型
6)类型转换: char--> 自动转换:byte-->short-->int-->long-->float-->double 强制转换:①会损失精度,产生误差,小数点以后的数字全部舍弃。②容易超过取值范围。
2017年10月27日晚有更新
java SE 入门之八大内置基本类型(第二篇)的更多相关文章
- java 入门之八大内置基本类型
		本文采用eclipse 工具演示,如果您对eclipse 工具不了解,请先学习下 eclipse 工具的使用,这个里面只是简单的介绍下输出和注释: 安装完成eclipse 以后,双击进入 后一次点击 ... 
- java SE 入门之控制语句&方法&递归算法(第五篇)
		一 控制语句(选择结构) 在学习控制语句之前,我们要先明确两件事情,什么是顺序结构(也叫做顺序执行),什么是选择结构 (分支结构或分支执行或选择执行),我们的代码执行是分为先后顺序的,就像我们之前写的 ... 
- Java中常用的七个阻塞队列第二篇DelayQueue源码介绍
		Java中常用的七个阻塞队列第二篇DelayQueue源码介绍 通过前面两篇文章,我们对队列有了了解及已经认识了常用阻塞队列中的三个了.本篇我们继续介绍剩下的几个队列. 本文主要内容:通过源码学习De ... 
- JSP中9大内置对象类型
		JSP中九大内置对象为: request 请求对象 类型 javax.servlet.ServletRequest 作用域 Requ ... 
- java:(九大内置对象,计算服务器访问次数,filter过滤器,MVC框架,MVC和三层架构的关系)
		1.九大内置对象: <%@ page language="java" import="java.util.*" pageEncoding="UT ... 
- java SE 入门之语言与环境(第一篇)
		Javase的语言与开发环境Keke2016年03月08日 Java属于-Oracle公司(甲骨文)创始人:Gosling1995年诞生1998年12月发布jdk1.22002年2月发布:jdk1.4 ... 
- #Java学习之路——基础阶段二(第二篇)
		我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ... 
- java SE 入门之运算符(第三篇)
		在 java 中主要有以上运算符,分为 赋值运算符 ,算术运算符.关系运算符(比较运算符),逻辑运算符和三目运算符(三元运算符). 我们一起来学习下吧! 一.赋值运算符 赋值运算符主要有五个.分别是 ... 
- java SE 入门之输入输出(第四篇)
		在第一篇,八大基本类型的时候,我就介绍了输出,当然,这些输出都是简单的,后续写到流的时候,在细化输入输出. 现在只要求看懂输入输出.输入其实就是接受键盘的输入. public class Hello ... 
随机推荐
- 数据分析融入至BI工具的新思路
			欢迎访问网易云社区,了解更多网易技术产品运营经验. 很认同一种说法:BI对企业的作用不是BI本身,而是数据本身.那么BI的作用和意义是干什么的呢-是让有意义的数据自己说出自己意义的工具. BI发展至今 ... 
- Flask基础-配置,路由
			一,配置文件 flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为: { 'DEBUG': get_debug_flag(default=False), 是否 ... 
- python format()函数的用法
			Python format() 函数的用法 复制自博主 chunlaipiupiupiu 的博客,如有侵权,请联系删除 python中format函数用于字符串的格式化 通过关键字 1 print(' ... 
- poj3070矩阵快速幂求斐波那契数列
			Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13172 Accepted: 9368 Desc ... 
- github本地分支合并到线上主分支
			如果是在本地index-swiper分支上,已经写好了那么: 1,git add . //提交到本地缓冲区 2,git commit -m "project init ... 
- Jmeter分布式测试的各种坑之jmeter-server修改ip
			第一坑:启动压力机的时候,直接./jmeter-server,会报如下错误 错误原因:127.0.0.1是本机, 一个回路地址, 没有指定地址 正确的启动方式:启动命令加一个参数, IP地址写压力机对 ... 
- 常见无线组网分析(NB-IOT组网和Mesh组网)
			NB-IOT LoRa Zigbee WIFI 蓝牙 组网方式 基于现有蜂窝组网 基于LoRa网关 基于Zigbee网关 基于无线路由器 居于蓝牙Mesh的网关 网络部署方式 节点 节点 + 网关 ... 
- SQL 高效的万能分页存储过程
			代码如下: USE [Blog] IF OBJECT_ID('Proc_Paging', 'P') IS NOT NULL --删除同名存储过程 DROP PROC Proc_Paging GO CR ... 
- WebDriverAPI(6)
			在指定元素上方进行鼠标悬浮 测试网址 http://www.baidu.com Java语言版本实例 @Test public void roverOnElement() { driver.manag ... 
- POJ 2291
			#include<iostream> #include<stdio.h> using namespace std; int compare(void const *,void ... 
