Java之数据类型,变量赋值
Java中的基础数据类型(四类八种):
1.整数型
byte----使用byte关键字来定义byte型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。byte型是整型中所分配的内存空间是最少的,只分配1个字节;取值范围也是最小的,只在-128和127之间,在使用时一定要注意,以免数据溢出产生错误。
short----short型即短整型,使用short关键字来定义short型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。系统给short型分配2个字节的内存,取值范围也比byte型大了很多,在-32768和32767之间,虽然取值范围变大,但是还是要注意数据溢出。
int----int型即整型,使用int关键字来定义int型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。int型变量取值范围很大,在-2147483648和2147483647之间,足够一般情况下使用,所以是整型变量中应用最广泛的。
long----long型即长整型,使用long关键字来定义long型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。而在对long型变量赋值时结尾必须加上“L”或者“l”,否则将不被认为是long型。当数值过大,超出int型范围的时候就使用long型,系统分配给long型变量8个字节,取值范围则更大,在-9223372036854775808和9223372036854775807之间。
2.浮点型
float----float型即单精度浮点型,使用float关键字来定义float型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。在对float型进行赋值的时候在结尾必须添加“F”或者“f”,如果不加,系统自动将其定义为double型变量。float型变量的取值范围在1.4E-45和3.4028235E-38之间。
double---double型即双精度浮点型,使用double关键字来定义double型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。在给double型赋值时,可以使用后缀“D”或“d”明确表明这是一个double类型数据,但加不加并没有硬性规定,可以加也可以不加。double型变量的取值范围在4.9E-324和1.7976931348623157E-308之间。
3.布尔型
boolean(true, false):布尔类型又称逻辑类型,只有两个值“true”和“false”,分别代表布尔逻辑中的“真”和“假”。使用boolean关键字声明布尔类型变量,通常被用在流程控制中作为判断条件。
4.字符型
char:char型既字符类型,使用char关键字进行声明,用于存储单个字符,系统分配两个字节的内存空间。在定义字符型变量时,要用单引号括起来,例如‘s’表示一个字符,且单引号中只能有一个字符,多了就不是字符类型了,而是字符串类型,需要用双引号进行声明。
基础数据类型变量和值全部存到栈,所以不能为空。
Java引用类型:
所有的类
所有的数组
所有的接口
补充:Java堆栈:
栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共 享。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要 在运行时动态分配内存,存取速度较慢。
补充:Java中的运算符优先级

Java中的变量的赋值:
1. 赋值不能超过数据类型的范围
public class Test1
{
public static void main(String[] args){
//byte的范围是-128~127
byte b=200;
}
}

注:在Java中,给整数变量赋值时,后面的值会先给一个int
2.强制类型转换:
public class Test1
{
public static void main(String[] args){
//可以在值得前面写一个(byte)让他强制转换
byte b=(byte)200;
System.out.println(b);
}
}

强制转换为byte类型之后,因为200大于了byte类型的最大取值范围127,所以会在从头开始,也就是再从byte类型的最小值-128开始数(200-127)位,得出-56。
3.
public class Test1
{
public static void main(String[] args){
short s=123;
int i=50000;
s=i;
}
}

将i的值赋给s,类型不兼容,int的最大值超过了short的最大的范围
4.
public class Test1
{
public static void main(String[] args){
long i=888;
long l=88888888888;
}
}

88888888888没有超过long的范围,为什么还是会报错?因为将数字赋给一变量时,首先给他一个int类型,而8888888888超过了int的范围所以报错,应该在超出范围的数字后面加一个l声明,l不分大小写。
public class Test1
{
public static void main(String[] args){
long i=888;
long l=88888888888l;
long k=88888888888L;
}
}
5.
public class Test1
{
public static void main(String[] args){
float f=12.345;
}
}

小数变量的值默认为double型,如果需要可以加f进行声明:float f=12.345f; 。
double没有问题。
6.
public class Test1
{
public static void main(String[] args){
char a=98;
System.out.println(a);
}
}

ASCII表:

public class Test1
{
public static void main(String[] args){
short s=123;
char a='a';
System.out.println(s+a);
}
}

在这样的运算中,计算的是它们在ASCII表中的位置的值。
类型转换优先级:

char short byte 进行运算的时候,默认取值为int
显式转换:也叫作强制类型转换,可能会导致精度丢失,精度由高到低,需要声明
隐式转换:精度由低到高,不需要声明
变量赋值练习:
/*
int a = 1, b = 2, c = 3;
等价于
int a;
int b;
int c;
*/
int i = 1, j;
// 等价于
int i = 1;
int j;
float f1 = 0.1;
//0.1默认类型为double,应 float f1 = (float)0.1;
float f2 = 123;
long l1 = 12345678, l2 = 88888888888;
//l2的值超过了默认类型int的范围
double d1 = 2e20, d2 = 124;
byte b1 = 1, b2 = 2, b3 = 129;
//b3的值超过了byte的范围, 应用b3=(byte)129;
j = j + 10;
i = i / 10;
i = i * 0.1;
//应用 i = (int)(i * 0.1);
char c1 = 'a', c2 = 125;
byte b = b1 - b2;
//应改为 int b = b1 - b2; 或者 byte b =(byte) b1 - b2;
char c = c1 + c2 - 1;
// int c = c1 + c2 - 1; 或 char c = (char)(c1 + c2 - 1);
float f3 = f1 + f2;
float f4 = f1 + f2 * 0.1;
//double f4 = f1 + f2 * 0.1; 或 float f4 =(float)( f1 + f2 * 0.1);
double d = d1 * i + j;
float f = d1 * 5 + d2;
//同上
int a, b, c;
a = 2;
b = 'q';
c = 4;
char d = '5';
byte e;
e = a + b;
//e =(byte) a + b;
boolean f = true;
double g = 4.3;
g += b;
b += 0.3;
b = b + 0.3;
//b =(int) b + 0.3;
c += f ? 2 : 4;
float h = 12.5;
//float h =(float) 12.5;
float i = 14.5;
//同上
e = h + i;
e += h;
a += 2147483646;
float j = h / 0.5;
//float j =(float) h / 0.5;
Java之数据类型,变量赋值的更多相关文章
- Java基本数据类型之间赋值与运算归纳
前言:面对“byte b1=3;byteb2=7;byte b=b1+b2;”报错,而“int i1=3;int i2=7;int i=i1+i2;”不报错,进行了深入探究,从而引申出java基本类型 ...
- Java ——关键字 数据类型 变量 常量
本节重点思维导图 Java程序结构 public class 类名 { public static void main(String[] args){ //……语句 } } 一门语言是由以下各种元素组 ...
- 【转】 Java中的变量赋值和参数传递
原文地址:http://blog.csdn.net/whmii/article/details/3363667 变量赋值和参数传递是java中两个容易让人迷惑的问题.对于原始类型(primitives ...
- 【Java】成员变量赋值执行顺序
程序中成员变量赋值的执行顺序
- Java基本数据类型总结、类型转换、常量的声明规范,final关键字的用法
1 Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过 ...
- 6. Java基本数据类型
Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...
- 011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三—— 变量值——即Java中的“字面值”
011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三-- 变量值--即Java中的"字面值" 变量值可以是 ...
- Java-Runoob:Java 基本数据类型
ylbtech-Java-Runoob:Java 基本数据类型 1.返回顶部 1. Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根 ...
- (六)Java 基本数据类型
Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...
- JavaSE基础(四)--Java基本数据类型
Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...
随机推荐
- 创建简单的Python列表
比如给出电影列表: The Holy Grail The Life of Brian The Meaning of Life 转换为Python可读的列表,需要遵循以下4个步骤: 1.在数据两边加引号 ...
- 机器学习(二)-kNN手写数字识别
一.kNN算法是机器学习的入门算法,其中不涉及训练,主要思想是计算待测点和参照点的距离,选取距离较近的参照点的类别作为待测点的的类别. 1,距离可以是欧式距离,夹角余弦距离等等. 2,k值不能选择太大 ...
- impala基础
impala: 查询impala表时一定要加库名使用级联删除带有表的数据库:DROP database name cascade; insert插入的两种方式: 1. insert into empl ...
- jQuery中使用$.each()遍历后台响应的json字符串问题
今天在做练习项目的时候,使用$.each()方法遍历后台传过来的json字符串时,chrome浏览器中发现如下问题 Cannot use 'in' operator to search for 'l ...
- java.util.HashMap和java.util.HashTable (JDK1.8)
一.java.util.HashMap 1.1 java.util.HashMap 综述 java.util.HashMap继承结构如下图 HashMap是非线程安全的,key和value都支持nul ...
- XSD详解二 - 简易元素、属性、内容限定
一.XSD 简易元素 XML Schema 可定义 XML 文件的元素. 简易元素指那些只包含文本的元素.它不会包含任何其他的元素或属性. 1.什么是简易元素? 简易元素指那些仅包含文本的元素.它不会 ...
- idea—— 模版配置
修改File Header: /** * @author: ${USER} Date: ${DATE} Time: ${TIME} */ 新增Package Header: /* * Copyrigh ...
- MySQL查看和修改表的存储引擎(转载+加点东西)
1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from YOUR_DB_NAME where name='YOU ...
- 2016第七届 蓝桥杯 全国总决赛B题(完全平方数) (练习)
道友给看了一道题目,就记录一下吧 题目: 给你0,1,2,3,4,5,6,7,8,9十个数字,要你选出任意一个或几个组合在一起成为完全平方数,每个数字都必须选且只能选一次,求可能的方案. 比如有其中几 ...
- 三十天学不会TCP,UDP/IP编程--MAC地址和数据链路层
这篇文章主要是来做(da)推(guang)介(gao)的!由于这两年接触到了比较多的这方面的知识,不想忘了,我决定把他们记录下来,所以决定在GitBook用半年时间上面写下来,这是目前写的一节,后面会 ...