学习目标
- 如何正确程序设计
- 使用 基本数据类型、变量、常量、运算符、语句组合完成程序设计
- 掌握8种基本数据类型的使用方法
- 掌握何为变量和变量的作用域
- 掌握数据类型之间的转换方式(自动类型和强制类型转换)
- 熟悉java中的运算符
- 直接量的类型和赋值
【面试题】
1。经典问题:变量只声明不赋值占不占内存?变量内容改变,变量的内存地址是不变的吗?
答:当程序运行时,即使变量没赋值,程序也会申请该变量数据类型的变量空间,并有内存地址。
当不关闭程序时,其变量的内存地址依旧不变。重新打开程序重新分配新的内存地址和内存空间
2。变量是什么?
变量只是具有存储数据功能的标识符,只是一个标识符 用于指向 特点的内存区域地址。
1)基本数据类型的计算执行速度比 对象计算的速度 快
2)不同的变量类型在内存都有自己的位置,内存也分成几大区域 如下:
code segment内存:(代码区:存放代码)
data segment内存:(数据区:存放静态变量、字符串常量)
stack 栈内存:(分配函数中的基本类型的变量和对象的引用变量)
heap 堆内存:(存放 动态生成new 出来的对象。)记忆法:对象不知道会用掉你多少空间,只能放在一堆堆里。
3。为什么要有不同的数据类型?
答:因为内存是有限的,不能随意浪费使用。所以则产生不同的数据类型来存放不同的值,这样可以节省内存的开支,节约。
4。如何正确理解变量赋值?
答:变量赋值 实际上是 变量指向此区域的内存填充值
3.1 如何设计程序
程序设计分为两步:如何设计算法 和如何将算法 翻译成代码
算法:是解决问题需要的一系列动作和 动作顺序。先做一个规划,可以用自然语言和伪代码描述一个一个步骤
算法例子:给定一个整数数组,判断是否存在重复元素
【步骤1】输入一组数据
【步骤2】查找这组数据是否有重复的元素:
方法1:第一个数 跟第二个数 比较的差 == 0 ,
【步骤3】如果有,则输出存在。如果无,则输出不存在
掌握变量的数据类型
编程的本质就是 利用内存中的数据 进行处理、读取和修改以实现我们想要的东西。
所有的数据需要声明指定一种数据类型,内存才知道腾出多少内存空间。(原则1:确认数据类型)
程序所有的数据先会保存(声明)在内存,后使用 如赋值、运算 (原则2:先声明后使用)
既然计算机只认识二进制,但由于二进制太过复杂。则高级语言采用 人们常用思维来区分数据的不同(整数、小数)
因为人的大脑如果看到一个数字能马上知道它是什么类型,但计算机不行。所以当计算接收数据时,我们必须告诉计算机这是什么类型。
Java提供了 8种基本数据类型 和 万能的 “引用类型”
8种基本数据类型 代表一些常用的数据,如
整数 int、byte、short、long
(小数)浮点数 float、double
记住java一定要用double,更鼓不变,就算数值不大也要用double。
了解java虚拟机的底层会知道,float放在内存中其实是当作double来处理的,它不会比double更节约内存资源,对应的double虚拟机会直接以double形式来进行处理,快速而且精度高,但是如果用float,不但不会节约内存资源,虚拟机为了校验float的精度,会花费更多的系统资源,例如cpu时钟,程序执行步骤等等。
相对于这点,整数类型,能用int就用int,不要用什么short类型,道理是一样,其实虚拟机中short,char,boolean,byte在内存中都是以int形式来处理的,为了校验精度,虚拟机还会付出格外的开销,这样其实得不偿失,不要自作聪明以为节约了内存,其实错了。当然long类型例外,虽然long类型也会增加资源的开销,但是毕竟能完成int完成不了的功能。
还有,其实这些资源的开销对于整个应用程序和现有硬件资源而言就是九牛一毛,微乎其微,没有必要过于在意。就用习惯的形式即可。不要自作聪明的用特别的数据类型,浮点就double,整形就int,长整型就long,其它的必要性都不大(byte的话,用来做数组还是很方便的,除此不推荐使用)
真或假 boolean
boolean 类型 的数值 只能是 true 或 false 。
常用语逻辑判断 和 控制流程,如:
if条件控制语句
while 循环控制语句
do while 循环控制语句
for 循环控制语句
字符 char
char 是用来表示 单个字符。字符型值 可以用 二进制、10进制、16进制来表示
字符集是单个字符的集合。
常见的字符集有 ASCII 字符集 和Unicode 字符集
ASCII 字符集,如用 10进制表示
)0~ 31 、 127 合计33个 ,是无法显示的字符,是控制字符。
)32~126, 合计95个字符。是可显示字符,典型代表有
【52个大小写字母】 大写: 65~90 小写 97~122 ,大小写转换之间相差 32 的值
【10个 数字字符】 48~57
!@# 等特殊字符、
Unicode 字符集,Java 常用 '\u十六进制' 来表示。如
工 = '\u2f2f'
怢 = '\u6022'
引用类型
万物都是引用类型,场景比喻:你看到了一只狮子,脑海浮现的是他属于动物类。
代码实例:看到了一个对象,则它属于某个类
一个类包含了成员变量和成员方法。即代表这个类 有什么属性和行为,如动物类有体重,身高的属性;有跑、吃的行为。
面向对象编程也是这样的道理。