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的数据类型包括基本数据类型和引 ...
随机推荐
- PHP实现杨辉三角形
<?php /**** * 杨辉三角形:我的实现方式. * 下标 * 1 0 * 1 1 1 循环上一行数据1次,计算后结果追加到当前行末尾 * 1 2 1 2 * 1 3 3 1 3 * 1 ...
- XAMPP添加多个站点之httpd-vhosts.conf 设置
1.在xampp\apache\conf\httpd.conf设置路径DocumentRoot和Directory 必须与xampp\apache\conf\extra\httpd-vhosts.co ...
- Python对象引用的所有权
目录 引用所有权 传递引用的所有权--返回值 出借引用的所有权--返回值 占据引用的所有权--参数 出借引用的所有权--参数 引用所有权 谁持有对象引用的所有权,谁就要对对象负责. 引用的所有权对函数 ...
- CF546E Soldier and Traveling(网络流,最大流)
CF546E Soldier and Traveling 题目描述 In the country there are \(n\) cities and \(m\) bidirectional road ...
- JDK工具(一)–Java编译器javac
1.概述 javac.exe: Java编译器,将Java源代码转换成字节码. 2.用法 javac <选项> <源文件> (使用过程中发现,javac <源 ...
- javascript小白学习指南1---0
第二章 变量和作用域 在看第二章时我希望,你能够回想一下前一次所讲的内容 假设有所遗忘 点这里 今天我们来说说 变量和作用域的问题 本章主要内容 基本类型和引用类型 运行环境 垃圾回收( ...
- 百度LBS开放平台个性化地图 制作一款独一无二的地图
百度LBS开放平台个性化地图 制作一款独一无二的地图 天天用百度地图的亲们是否已不再满足仅仅看例如以下的地图样式了呢? 默认百度地图样式 是否特别渴望看特别不一样的地图呢.如带京城81号气息的午夜蓝 ...
- Python爬虫爬取一篇韩寒新浪博客
网上看到大神对Python爬虫爬到非常多实用的信息,认为非常厉害.突然对想学Python爬虫,尽管自己没学过Python.但在网上找了一些资料看了一下,看到爬取韩寒新浪博客的视频.共三集,第一节讲爬取 ...
- modSecurity规则学习(八)——防止CC攻击
modSecurity日志收集:在phase 5阶段处理. 由于CC攻击主要考虑对动态请求的防护,所以要排除静态资源的请求,或者自定义动态请求的后缀或者关键字做接口针对性的防护. 定义需要排除的请求u ...
- Aizu - 2555 Everlasting Zero 模拟
Aizu - 2555 Everlasting Zero 题意:学习技能,每个技能有不同的要求,问能否学习全部特殊技能 思路:枚举每两个技能,得到他们的先后学习关系,如果两个都不能先学的话就是No了, ...