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 ...
随机推荐
- C# 泛型实现Table与实体的相互转换
public class ModelHandler<T> where T : new() { /// <summary> /// Table转换成实体 /// </sum ...
- Day 13 迭代器,生成器.
一.迭代器 可以进行for循环的 数据类型 str ,list tuple dict set 文件句柄 什么是可迭代对象? 方法一:dir(被测对象) 如果他含有__iter__,那这个对象就叫做可迭 ...
- android界面
自定义控件EditText 在src中的drawable新建myeditext.xml文件<?xml version="1.0" encoding="utf-8&q ...
- 4、Orcal数据库dmp文件导入
1.CMD命令导入备份数据库dmp文件: 以上一篇博客提到的gdnh用户,我们需要在cmd窗口执行如下命令: imp gdnh/admin123@orcl file=E:/createTable.dm ...
- hdoj1575 Tr A(矩阵快速幂)
简单的矩阵快速幂.最后求矩阵的秩. #include<iostream> #include<cstring> using namespace std; ; int n,k; s ...
- NPM install 中:-save 、 -save-dev 和 没有--save的情况
原文地址:https://www.cnblogs.com/limitcode/p/7906447.html npm install moduleName 命令 . 安装模块到项目node_module ...
- [转][SQL]如何实现存储过程中动态加入条件---没想到语句可以这么巧妙
在存储过程过程中,如果要实现Select查询的where子句动态查询,可以用exec ( "select .... where" +@whereStr)这样的方式.但这样的话,感觉 ...
- java 0 开始
利用了61天的时间学习了 se 不过忘得也很多 .在这里开一个帖子 打算利用几天的时间进行复习,把凡是能用到的都放在这边. 不带图形界面的第一个项目已经弄完 (看视频加看书..而且自己往上面加东 ...
- string的七种用法
以下是string的七种用法,注意哦,记得要时常去查看java的API文档,那个里面也有很详细的介绍 1>获取 1.1:字符串中包含的字符数,也就是字符串的长度. int length():获 ...
- 【转载】 C#中数组、ArrayList和List三者的区别
原文地址:http://blog.csdn.net/zhang_xinxiu/article/details/8657431 在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到 ...