第二章: Java总结
第二章笔记
什么是变量:
变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样。
#在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据。说白了,变量就是代表程序运行时存放数据的地方
数据的存放:
磁盘、内存卡、U盘、光盘、内存条、固态、机械硬盘等等
简单的信息(临时的信息)纸
人把信息存在大脑
变量怎么在内存中存储
已将数据存储打内存中怎么去找
分配后的内存会有内存地址(内存地址不好记忆)
:通过变量名可以简单快速地找到它存储的数据
Java定义的常用数据类型有哪些?
字节:#是计算机信息技术用于计量存储容量的一种计量单位,
#也表示一些计算机编程语言中的数据类型和语言字符
8个二进制位构成1个"字节(Byte)",它是存储空间的基本计量单位。
1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间
位:是电子计算机中最小的数据单位。每一位的状态只能是0或1
数据只用0和1还种表现形式,(这里只表示一个数据点,不是数字),一个0或者1占一个“位”,而系统中规定8个位为一个字节
一个字节等于8位
(一个字节就是一个英语字母这么大 一个汉字的一半)
电脑里面的所有数据都是以二进制数1或0来存储的,一个1或0叫1bit即1位,8位二进制数称为一个字节,即Byte!
一个字符能存储一个中文汉字
一个汉字占用两个字节
#术语:位,字节用于描述计算机数据单位或计算机存储单位。这里主要指存储单位
# 最小的存储单位称为位(bit):
# 只能容纳两个值(0或1)之一,不能在一个位中存储更多的信息。位是计算机存储的基本单位。
# 对于一种给定的计算机设计,字(word)是自然的存储单位。
# 一个英文字符和英文标点占用一个字节,一个中文字符和中文标点占用2个字节
#
# 字节(byte)是常用的计算机存储单位。
# 字节的标准定义:一个字节均为8位。由于上述所讲每个位或者是0或者是1,所以一个8位的字节包含256种可能的0,1组合
之前讲过集中数据类型?
java基本数据类型就8种,记住就好了。除了这些都是引用型的了
java四类八种基本数据类型 (占用字节)
#在栈中可以直接分配内存的数据是基本数据类型
字节大小
第一类:整型
int(整数类型) 4
byte(字节类型) 1
short(短整形) 2
long(长整形) 8
第二类:浮点型
double(双精度类型 双精度) 8
float(浮点类型 单精度) 4
第三类:逻辑型
boolean(布尔型 他只有两个值1.True 2.False) 1
第四类:字符型
char(字符型) 2
主类型 大小 最小值 最大值
boolean 1位 - -
char 16位 0 2的16次方-1=65535
byte 8位 -128 +127
short 16位 -2的15次方=-32768 +2的15次方-1
int 32位 -2的31次方 +2的31次方-1
long 64位 -2的63次方 +2的63次方-1
float 32位 1.4E-45 3.4028235E38
double 64位 4.9E-324 1.7976931348623157E308
// byte
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("最小值:" + Byte.MIN_VALUE);
System.out.println("最大值:" + Byte.MAX_VALUE);
System.out.println();
// short
System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// long
System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// float
System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
//1.4乘于10的负45次方;此处的E并非自然对数,而是10的次方的意思。这是科学计数法的写法
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
// double
System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
// char
System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="+ (int) Character.MIN_VALUE);
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="+ (int) Character.MAX_VALUE);
变量的声明及使用
变量的定义两种方式:
语法:变量类型 变量名 = 数值;
// 先定义 再赋值
int a;
a = 10;
// 边定义 边赋值
int a = 10;
起变量名一定要规范:
字母、下划线、$符号 其余部分任意字符、下划线、数字、$符号
通常第一个单词的首字母小写,其后的单词的首字母大写:mySchool(起变量名要有意义,见名知意)
赋值运算符(=):
变量名 = 表达式
程序中的赋值是右边给左边赋值
int a = (1 + 2) * (8 - 2);
算数运算符
+ :加
- :减
x : 乘
/ :除
% :余
类型转换:
自动类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
数据类型转换必须满足如下规则:
1. 不能对boolean类型进行类型转换。
2. 不能把对象类型转换成不相关类的对象。
3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
4. 转换过程中可能导致溢出或损失精度,例如:
int i =128;
byte b = (byte)i;
因为byte类型时8位,最大值为127,所以当强制转换为int类型值128时候就会导致溢出。
5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;
(int)-45.89f == -45
规则一:如果一个操作数为double型,整个表达式都提为double
规则二:满足自动转换类型
char c1='a';//定义一个char类型
int i1 = c1;//char自动类型转换为int
System.out.println("char自动类型转换为int后的值等于"+i1);
char c2 = 'A';//定义一个char类型
int i2 = c2+1;//char 类型和 int 类型计算
System.out.println("char类型和int计算后的值等于"+i2);
解析:c1的值为字符'a',查ascii码表可知对应的int类 型值为97,'A'对应值为65,所以i2=65+1=66
扩展:
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646
强制类型转换:
语法:(类型名)表达式
强制类型转换
1. 条件是转换的数据类型必须是兼容的。
2. 格式:(type)value type是要强制类型转换后的数据类型 实例:
实例
public class QiangZhiZhuanHuan{
public static void main(String[] args){
int i1 = 123;
byte b = (byte)i1;//强制类型转换为byte
System.out.println("int强制类型转换为byte后的值等于"+b);
}
}
隐含强制类型转换
1. 整数的默认类型是 int。
2. 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。
这一节讲解了 Java 的基本数据类型。下一节将探讨不同的变量类型以及它们的用法
逻辑运算符
&& :两个条件同时为真,结果为真
|| :两个条件有一个为真,结果为真
! :条件为真,结果为假;条件为假,结果为真
关系运算符
> 大于
< 小于
= 等于
>= 大于等于
<= 小于等于
!= 不等于
关系运算符的作用:用来做比较运算,比较结果为boolean
运算符的优先级
最高 小括号()
最低 赋值=
优先级顺序:算数运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符
short a = 1;
short b = 2;
那么 a+b 是什么类型?
答:在java的世界里,如果比int类型小的类型做运算,java在编译的时候就会将它们统一强转成int类型。当是比int类型大的类型做运算,就会自动转换成它们中最大类型那个。
String a1 = "张三";// 000001
String a2 = "张";// 000001
if(a1 == a2){ // 比较的地址
System.out.println("True");
}else{
System.out.println("False");
}
if(a1.equals(a2)){// 比较值是否相等
System.out.println("True");
}else{
System.out.println("False");
}
}
第二章: Java总结的更多相关文章
- java面向对象编程——第二章 java基础语法
第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...
- 《深入理解java虚拟机》第二章 Java内存区域与内存溢出异常
第二章 Java内存区域与内存溢出异常 2.2 运行时数据区域
- 第二章Java内存区域与内存溢出异常
第二章 Java内存区域与内存溢出异常 一.概述 对与Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每个new操作去写delete/free代码,不容易出现内存泄露和内存溢出问 题, ...
- 虚拟机--第二章java内存区域与内存溢出异常--(抄书)
这是本人阅读周志明老师的<深入理解Java虚拟机>第二版抄写的,有很多省略,不适合直接阅读,需要阅读请出门左转淘宝,右转京东,支持周老师(侵权请联系删除) 第二章java内存区域与内存溢出 ...
- (第二章)Java并发机制的底层实现原理
一.概述 Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. ...
- JAVA基础第二章-java三大特性:封装、继承、多态
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- 第二章 Java 基本语法1
2.1关键字 1.定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词). 2.特点:关键字中所有字母都是小写字母. 3.分类: 用于定义数据类型的关键字:byte.short.int.lo ...
- 第二章 Java浮点数精确计算
1.实际意义 在实际开发中,如果需要进行float或double的精确计算(尤其是财务计算),直接使用float或double是不行的(具体的例子看下边的代码的main方法的测试结果),需要使用Big ...
- 第二章 Java基础知识(上)
2.1.注释 单行注释 // 注释内容 多行注释 /* 注释内容 */ 文档注释 /**注释内容 */ 2.2.关键字 定义:在Java语言中被赋予特殊含义的小写单词 分类: 2.3.标识符 定义:标 ...
- <<深入Java虚拟机>>-第二章-Java内存区域-学习笔记
Java运行时内存区域 Java虚拟机在运行Java程序的时候会将它所管理的内存区域划分为多个不同的区域.每个区域都有自己的用途,创建以及销毁的时间.有的随着虚拟机的启动而存在,有的则是依赖用户线程来 ...
随机推荐
- 玩转java多线程(wait和notifyAll的正确使用姿势)
转载请标明博客的地址 本人博客和github账号,如果对你有帮助请在本人github项目AioSocket上点个star,激励作者对社区贡献 个人博客:https://www.cnblogs.com/ ...
- Java多线程同步工具类之CountDownLatch
在过去我们实现多线程同步的代码中,往往使用join().wait().notiyAll()等线程间通信的方式,随着JUC包的不断的完善,java为我们提供了丰富同步工具类,官方也鼓励我们使用工具类来实 ...
- Redis相关面试题
Reids:单线程+io多路复用机制 Redis与Memcached的区别: 一.memcached值是简单字符串,redis支持hash.set.list等复杂数据类型 二.redis可持久化数据, ...
- spring 5.x 系列第8篇 —— 整合Redis客户端 Jedis和Redisson (代码配置方式)
文章目录 一.说明 1.1 Redis 客户端说明 1.2 Redis可视化软件 1.3 项目结构说明 1.3 依赖说明 二.spring 整合 jedis 2.1 新建基本配置文件和其映射类 2.2 ...
- vuex分模块3
nuxt 踩坑之 -- Vuex状态树的模块方式使用 原创 2017年12月20日 11:24:14 标签: vue / nuxt / vuex / 模块化 / 状态管理 874 初次看到这个模块方式 ...
- PATB 1032 挖掘机技术哪家强(20)
#include <cstdio> #include <vector> using namespace std; const int N = 100001; vector &l ...
- HTTP 学习笔记02
请求行 格式:请求方式 资源路径 HTTP版本号 HTTP1.1 还需要 [host] 例:GET /test.html HTTP/1.0 GET /test.html HTTP/ ...
- POJ 1986:Distance Queries(倍增求LCA)
http://poj.org/problem?id=1986 题意:给出一棵n个点m条边的树,还有q个询问,求树上两点的距离. 思路:这次学了一下倍增算法求LCA.模板. dp[i][j]代表第i个点 ...
- [AI开发]目标跟踪之行为分析
基于视频结构化的应用中,目标在经过跟踪算法后,会得到一个唯一标识和它对应的运动轨迹,利用这两个数据我们可以做一些后续工作:测速(交通类应用场景).计数(交通类应用场景.安防类应用场景)以及行为检测(交 ...
- Jenkins高级应用——Publish Over SSH插件
在之前的篇幅中有介绍,利用jenkins结合shell脚本完成远程部署的功能,点击Jenkins结合shell+expect脚本完成线上环境自动构建部署即可查看. 上述方式需要引入expect脚本,安 ...