Java: 数据类型
核心:对事物的某种规范
前提:
1.JAVA:JAVA程序的运行是以堆栈的操作来完成的
堆栈以帧为单位保存线程的状态。
JVM对堆栈只进行两种操作:以帧为单位的压栈和出栈操作。
理解:
2.数据类型:描述内存的一种机制(对内存位置的一个抽象表达方式)
内存抽象表现形式:
1.变量:计算机存储数据的容器
变量的要素:类型(数据类型决定了变量的大小)、名称、存数据
规范:
使用:
变量的使用:
步骤:声明、赋值、使用
int a; a=1;
类型 变量名 值
规则:
--变量要先赋值后使用
--变量名不能重复,不能以数字开头,不能出现非法字符
--变量名不能是关键字
--变量名中只能有_和$这两个特殊符号
--变量名中只能由_、$、字母、数字组成,不能以数字开头
--变量名是区分大小写的
--如果一个变量名是由两个单词组成的,那么第1个单词的第1个字母小写,第2个单词的第1个字母大写。
核心:变量是变化的
变量确定了数据类型,确定内存的大小
2.数据类型:基本类型和引用数据类型。
描述:
基本类型:简单数据类型是不能简化的、内置的数据类型、由编程语言本身定义,它表示了真实的数字、字符和整数。
引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。
·数据存储的特征:
基本类型的变量和对象的引用变量都是在函数的栈内存中分配
基本类型只能用来存数据, 不能用来操作判断数据
内存的开辟:在我们定义这个变量的时候。
释放:
当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间
特征:
存取速度比堆要快,仅次于寄存器,栈数据可以共享
存在栈中的数据大小与生存期必须是确定的,缺乏灵活性
引用类型:引用类型继承于Object类(也是引用类型)都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的;
内存在什么时候开辟:在new的时候 开辟
释放:
数组和对象在没有引用变量指向它的时候,才变为垃圾,不能在被使用,但仍 然占据内存空间不放,在随后的一个不确定的时间被垃圾回收器收走
特点:
动态地分配内存大小,生存期也不必事先告诉编译器
在运行时动态分配内存,存取速度较慢
类别:
基本类型:布尔类型和数值类型
数值类型:定点类型和浮点类型
引用类型:类、接口、数组
概念:
定点:定点的意思是把小数点定在末尾,小数点后没有数字的数据,Java中通常把它们称为整数;
常量:就是直接的值;
变量:放置常量的容器,除了放置常量之外,也可以给变量一个运算式,变量中的值是可变的;
1) 基本类型:
>>定点类型:
byte(字节类型) 一个byte 8位,取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)默认是0
short(短整型) 一个short 16位,取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)默认是0
int(整型)一个int 32位,取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)默认是0
long(长整型) 一个long 64位,取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)默认是0L或0l推荐用大写;
描述:
我们希望它是byte型的,可以在数据 后加上大写的 B:35B,表示它是byte型的,同样的35S表示short型,35L表示long型的,表示int我们可以什么都不用加,但是如果要表示long型 的,就一定要在数据后面加“L”。
核心:数据类型确定的时候,数据的存储如果超出范围会编译出错
字符类型:char
Java中一个字符(char)表示Unicode字符集中的一个元素。Unicode字符由16位组成,因此,有(65535)个不同的字符可用,范围从’u0000’到’uFFFF’(u告诉编译器你在用两个字节[16位]字符信息表示一个Unicode字符)。用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容,字符的存储范围在\u0000~\uFFFF,在定义字符型的数据时候要注意加' ',比如 '1'表示字符'1'而不是数值1。
>>浮点类型:
float (单精度浮点型) 一个float 32位,占用4个字节, 例3.2F,默认是0.0f , 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)。
double (双精度浮点型) 一个dobule 64位 占用8个字节, 例3.2, 默认是0.0, 1.797693e+308~ 4.9000000e-324 占用8个字节
注:double型比float型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double型的。
如果要表示一个数据是float型的,可以在数据后面加上“F”。
浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。
基本类型赋值时的特性:
1.当整数类型的数据使用字面量赋值的时候,默认值为int类型,就是直接使用0或者其他数字的时候,值的类型为int类型,
所以当使用 longa = 0这种赋值方式的时候,JVM内部存在数据转换。
2.浮点类型的数据使用字面量赋值的时候,默认值为double类型,就是当字面两出现的时候,JVM会使用double类型的数据类型。
3.从JDK 5.0开始,Java里面出现了自动拆箱解箱的操作,基于这点需要做一定的说明:
2)引用类型:new出来的
Random、Scanner、集合、数组、自己定义的类、String等
Student s = new Student();
引用 对象
数据交换特征:
交换的本质
基本类型只在栈中开空间
引用类型既要在栈中开空间也要在堆中开空间
·默认值:
1.变量没有默认值 int a; System.out.print(a) //报错
2.数组有默认值:int[] 0 double[] 0.0 char[] AscII为0的字符3.类中的
3.属性:有默认值int 0 double 0.0 String null 自定义的类型:null
>>类型转换:
类型转换:
--自动类型转换(将小数据放入到大空间中,自动转换)
--强制转换:目标类型 变量名=(目标类型)其他类型的变量
int a=(int)5.0;
一、自动转换:
1.基本类型:类型相似 ,小的往的大
int a = 9;
double b = a;
String a ="123"
int b = (int)a;错误
2.引用类型:继承关系 子类转父类
子类:小的类型
父类:大的类型
Son son =new Son();
Father f = son;
总结:父类引用指向子类对象,父类引用
只能调用自己的属性和方法,不能调用子类
的属性和方法(子类的特征被隐藏了)
二、强制转换:
1.基本类型 :类型相似 大的往小的转
double a = 9.9;
int b = (int)a; //b=9
2.引用类型:继承关系 父类转子类
Father f =new Father();
Son son = (Son)f;
3.怎么样判断父类引用中的真实对象?
instanceof
Father f = new Son();
System.out.println(f instanceof
Son);//ture
System.out.println(f instanceof
Son1);//false
数据算法:
1. 运算符:
算术运算符:
1)赋值运算符=:它的作用是将右边的值复制一份到左边的空间中
去。
2) -,*,/,%(整除取余)-,*,/:运算数据只能是数字类型
的。
3) >>进行数字相加
5+6==11
1.1+2.1==3.2
3+1.5==4.5//一个穷人和一个富人的结果是富
人
int t=5.5+1;//错误
double c=5.5+2;//正确
>>+:当与字符串相加时,起连接作用
"abc"+1=="abc1"
"12"+3+5=="123"+5=="1235"
"12"+2*3=="12"+6=="126" 126
4)/:
5/2==2(穷人与穷人的结果还是穷人)
5.0/2==2.5(穷人与富人的结果是富人)
double a=5/2;//2.0(小数据可以放入大空间
内)
int b=5/2.0;//报错(大数据不能放入小空间
内)
5)%(取模,整除取余)
5%2==1
2.2%1==0.2
表达式:运算符与数据的组合就是一个表达式
a+b;
int a=5;
a>b;
关系运算符:主要是用来进行比较大小,或相等
>,>=,<,<=,==,!=
比较后的结果是:真(true),假(false)
--boolean flag=true
逻辑运算符:&& || !
优先级:
() ! 算术运算符 关系运算符 && || =
语法结构:顺序结构、条件结构、逻辑结构
条件结构:
1) if(表达式){
//代码
}
if(flag)
}else{
}
if-else if-...-else
嵌套条件结构:
特点:它既能做等值判断,又可以做区间判断
2)switch(变量){
case 值1:
代码块;
break;
case 值2:
代码块
break;
case 值3:
代码块;
break;
default:
代码块;
break;
}
循环结构:
要素: 循环变量初始化、条件判断、循环体内改变循环变量。
特征:重复着做相同或相似的事,并且有变化的地方一定要有规律
,否则不能使用循环。
一,while循环
循环变量初始化
while(条件判断){
循环体;
循环体内改变循环变量;
}
二,do-while循环
do{
循环体;
循环体内改变循环变量;
}while(条件判断);
如果第条件满足时,while和do-while执行的结果是一样的
但如果条件不满足时,while一次都不会执行,而do-while至少会
执行一次
while和do-while适合做无限次数的循环
三,for循环
for(循环变量初始化;条件判断;循环体内改变循环变
量){
循环体;
}
for适合做有限次数的循环
前提:在循环中
break中断循环
break一般都是和if一起来使用
continue关键字的使用
继续:中止本次循环体的执行,继续下一次循环
在使用时,一般都要和if结构一起使用。否则没有意义。
int b=a++;++放在后面,表示先使用a的值,a再加1
int d=++c;++放在前面,表示先将c+1,再将值赋给d
转义字符:
Java中的常用转义字符见表2-1
特点:只能做等值判断,它不能做区间判断
探测类型:int char
\r :回车
\n :换行
\t :TAB键
\t \n的用法:只可以在双引号中出现
\t 主要作用对齐格式 tab 8字符宽度
Java: 数据类型的更多相关文章
- 回顾java基础—Java数据类型
1 java数据类型.8种基本类型,3种引用类型 基本类型(也称:原始类型):byte.short.int.long.char.float.double.boolean 引用类型:类,接口,数组 2 ...
- JAVA数据类型,变量,转换,常量,运算符
java数据类型: Java基本类型共有八种,基本类型可以分为三类: 1.字符类型char,用单引号赋值 2.布尔类型boolean 3.数值类型byte.short.int.long.float.d ...
- 多态、GC、Java数据类型
多态 一.java中实现多态的机制是什么? 靠的是: 父类定义的引用变量可以指向子类的实例对象,或者接口定义的引用变量可以指向具体实现类的实例对象 而程序调用的方法,在运行期才动态绑定, 它就是引用变 ...
- java数据类型定义与输出
JAVA数据类型分基本数据类型和引用数据类型. 一.基本数据类型 Java里面包含8个基本数据类型,分别是: boolean.byte.char.short.int.float.douboe.long ...
- java数据类型图:
java数据类型图: ┏数值型━┳━整数型:byte short int long ┏基本数据类型━━┫ ...
- java数据类型学习
java数据类型基本分为两类: 一类为基本数据类型: 数值类型: 整数类型:byte.short.int.long 浮点类型:float.double 字符类型:char 布尔类型:boolean 一 ...
- JAVA —— 数据类型
引言:java 数据类型可分为两大类:基本数据类型和引用类型,其中基本数据类型又包括整形.浮点型.字符型和布尔型,而引用型变量与基本类型变量不同,它的值是指向内存空间的引用(地址),引用在其他语言中称 ...
- java.sql.Types,数据库字段类型,java数据类型的对应关系
以下转自:http://kummy.itpub.net/post/17165/172850 本文在原文基础上有增减. 本概述是从<JDBCTM Database Access from Java ...
- java数据类型,hibernate数据类型,标准sql数据类型之间的对应表
Hibernate API简介 其接口分为以下几类: l 提供访问数据库的操作的接口: l 用于配置Hibernate的接口: l 回调接口 l ...
- Java数据类型(基本数据类型)学习
Java数据类型(基本数据类型)学习 与其他语言一样,Java编程同样存在,比如int a,float b等.在学习变量之前我就必须先了解Java的数据类型啦. Java的数据类型包括基本数据类型和引 ...
随机推荐
- Maven(一)之Maven入门
一.Maven简介 Maven可以翻译为“知识的积累”.“专家”.“内行”.作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建.依赖管理.和项目信息管理.M ...
- del_archivelog
#!/usr/bin/env bash # # INTRO : The script for delete physical standby app ...
- Linux-TCP/IP, IPv4地址类别摘要
TCP/IP分层: application layer transport layer internet ...
- 优秀的Linux文本编辑器 (转载)
想要挑起狂热Linux爱好者之间的激烈争辩吗?那就问问他们最喜欢的文本编辑器是什么吧.在开源社区中,选择一个用来写文本,或者更进一步,用来写代码的编辑器,比选择一个球队或者游戏控制器还要重要.但是任何 ...
- iOS下调用元素的focus方法,input元素不聚焦,键盘不弹起的问题
页面元素 <input type="text" ref="elInput"/> <div style="margin-top:20p ...
- jumpserver 新建用户收不到邮件
在设置邮件开启pop3/smtp/imap 时 会提示要设置授权码 重启jumpserver 遇到错误 163 邮箱没有收到密码 点击更新没有效果 测试连接成功以后 ,删除用户 ,然后 重新 创建一 ...
- HTML学习----------DAY1 第三节
本章通过实例向您演示最常用的 HTML 标签. 提示:不要担心本章中您还没有学过的例子,您将在下面的章节中学到它们. 提示:学习 HTML 最好的方式就是边学边做实验.我们为您准备了很好的 HTML ...
- C++windows内核编程笔记day11 win32静态库和动态库的使用
windows库程序: 静态库: 源码被链接到调用的程序或动态库,被调用时,代码最少有1份,文件后缀.LIB 动态库: 函数被程序或其它动态库调用,被调用时,代码仅仅有1份,文件后缀.DLL 静态库( ...
- uip UDP server广播模式(client能够随意port,而且主动向client发送数据)
眼下移植uip,发现UDP server模式下,必须指定本地port以及clientport,否则仅仅能讲clientport设置为0,才干接收随意port的数据,可是无法发送数据,由于此时clien ...
- Android禁止ViewPager的左右滑动
转载请注明出处:http://blog.csdn.net/allen315410/article/details/40744287 有时候在开发中会遇到一些"诡异"的要求,比方在V ...