《Java 编程的逻辑》笔记——第1章 编程基础(一)

声明:

本博客是本人在学习《Java 编程的逻辑》后整理的笔记,旨在方便复习和回顾,并非用作商业用途。

本博客已标明出处,如有侵权请告知,马上删除。

开头语

计算机就是个机器,这个机器主要由 CPU、内存、硬盘和输入输出设备组成。计算机上跑着操作系统,如 Windows 或 Linux,操作系统上运行着各种应用程序,如 Word, QQ 等。

操作系统将时间分成很多细小的时间片,一个时间片给一个程序用,另一个时间片给另一个程序用,并频繁地在程序间切换。不过,在应用程序看来,整个机器资源好像都归他使,操作系统给他提供了这种假象。 对程序员而言,我们写程序,基本不用考虑其他应用程序,我们想好怎么做自己的事就可以了。

应用程序看上去能做很多事情,能读写文档,能播放音乐,能聊天,能玩游戏,能下围棋 … 但本质上,计算机只会执行预先写好的指令而已,这些指令也只是操作数据或者设备。所谓程序,基本上就是告诉计算机要操作的数据和执行的指令序列, 即对什么数据做什么操作

比如说:

  • 读文档,就是将数据从磁盘加载到内存,然后输出到显示器上
  • 写文档,就是将数据从内存写回磁盘。
  • 播放音乐,就是将音乐的数据加载到内存,然后写到声卡上。
  • 聊天,就是从键盘接收聊天数据,放到内存,然后传给网卡,通过网络传给另一个人的网卡,再从网卡传到内存,显示在显示器上。

基本上,所有数据都需要放到内存进行处理,程序的很大一部分工作就是操作在内存中的数据

1.1 数据类型和变量

1.1.1 数据类型

数据类型用于对数据归类,方便理解和操作。对 Java 语言而言,有如下基本数据类型

  • 整数类型:有四种整型 byte/short/int/long,分别有不同的取值范围
  • 小数类型 :有两种类型 float/double,有不同的取值范围和精度
  • 字符类型:char,表示单个字符
  • 真假类型:boolean,表示真假

基本数据类型都有对应的数组类型,数组表示固定长度的同种数据类型的多条记录,这些数据在内存中挨在一起存放。 比如说,一个自然数可以用一个整数类型数据表示,100 个连续的自然数可以用一个长度为 100 的整数数组表示。一个字符用一个 char 表示,一段文字可以用一个 char 数组表示。

Java 是一个面向对象的语言,除了基本数据类型,其他都是对象类型。对象到底是什么呢?简单的说,对象是由基本数据类型、数组和其他对象组合而成的一个东西,以方便对其整体进行操作。

比如说,一个学生对象,可以由如下信息组成:

  • 姓名:一个字符数组
  • 年龄:一个整数
  • 性别:一个字符
  • 入学分数:一个小数

日期在 Java 中也是一个对象,内部表示为整形 long。

1.1.2 变量

为了操作数据,需要把数据存放到内存中,所谓内存在程序看来就是一块有地址编号的连续的空间。数据放到内存中的某个位置后,为了方便地找到和操作这个数据,需要给这个位置起一个名字。编程语言通过变量这个概念来表示这个过程。

声明一个变量,比如 int a 其实就是在内存中分配了一个空间,这个空间存放 int 数据类型,a 指向这个内存空间所在的位置。通过对 a 操作即可操作 a 指向的内存空间,比如 a=5 这个操作即可将 a 指向的内存空间的值改为 5。

之所以叫 “变” 量,是因为它表示的是内存中的位置,这个位置存放的值是可以变化的。

虽然变量的值是可以变化的,但名字是不变的,这个名字应该代表程序员心目中这块内存位置的意义,这个意义应该是不变的。比如说这个变量 int second 表示时钟秒数,在不同时间可以被赋予不同的值,但它表示的就是时钟秒数。之所以说应该是因为这不是必须的,如果你非要起一个变量名叫 age 但赋予它身高的值,计算机也拿你没办法。

1.2 赋值

声明变量之后,就在内存分配了一块位置,但这个位置的内容是未知的,赋值就是把这块位置的内容设为一个确定的值。Java 中基本类型、数组、对象的赋值有明显不同,本文介绍基本类型和数组的赋值,关于对象后续文章会详述。

1.2.1 基本类型

1.2.1.1 整数类型

整数类型有 byte, short, int 和 long,分别占用 1/2/4/8 个字节,取值范围如表 1-1 所示。

在这里插入图片描述

赋值形式很简单,直接把熟悉的数字常量形式赋值给变量即可,对应的内存空间的值就从未知变成了确定的常量。但常量不能超过对应类型的表示范围。例如:

byte b = 23;
short s = 3333;
int i = 9999;
long l = 32323;

但是,在给 long 类型赋值时,需要在常量后面加大写或小写的 L,例如:

long a = 3232343433L;

1.2.1.2 小数类型

小数类型有 float 和 double,占用的内存空间分别是 4 和 8 个字节,有不同的取值范围和精度,double 表示的范围更大,精度更高,具体如表 1-2 所示。

在这里插入图片描述

E 表示以 10 为底的指数,E 后面的 + 号和 - 号代表正指数和负指数,例如:1.4E-45 表示 1.4 乘以 10 的 -45 次方。后续文章会进一步分析小数的二进制表示。

对于 double,直接把熟悉的小数表示赋值给变量即可,例如:

double d = 333.33;

但对于 float,需要在数字后面加大写 F 或小写 f,例如:

float f = 333.33f;

除了小数,也可以把整数直接赋值给 float 或 double,例如:

float f = 33;
double d = 3333333333333L;

1.2.1.3 真假类型

这个很简单,直接使用 true 或 false 赋值,分别表示真和假,例如:

boolean b = true;
b = false;

1.2.1.4 字符类型

字符类型 char 用于表示一个字符,这个字符可以是中文字符,也可以是英文字符。

char 占用的内存空间是两个字节

赋值时把常量字符用单引号括起来,不要使用双引号,例如:

char c = 'A';
char z = '中';

1.2.1.5 一些说明

上面介绍的赋值都是直接给变量设置一个常量值。但也可以把变量赋给变量,例如:

int a = 100;
int b = a;

变量可以进行各种运算(后续文章讲解),也可以将变量的运算结果赋给变量,例如:

int a = 1;
int b = 2;
int c = 2*a+b; //2乘以a的值再加上b的值赋给c

上面介绍的赋值都是在声明变量的时候就进行了赋值,但这不是必须的,可以先声明变量,随后再进行赋值。

1.2.2 数组类型

1.2.2.1 赋值语法

基本类型的数组有 3 种赋值形式,如下所示:

1. int[] arr = {1,2,3};

2. int[] arr = new int[]{1,2,3};

3. int[] arr = new int[3];
   arr[0]=1; arr[1]=2; arr[2]=3;

第 1 种和第 2 种都是预先知道数组的内容,而第 3 种是先分配长度,然后再给每个元素赋值。

第 3 种形式中,即使没有给每个元素赋值,每个元素也都有一个默认值,这个默认值跟数组类型有关。数值类型的值为 0,boolean 为 false, char 为空字符。

数组长度可以动态确定,如下所示:

int length = ... ;//根据一些条件动态计算
int arr = new int[length];

虽然可以动态确定,但定了之后就不可以变。数组有一个 length 属性,但只能读,不能改。

一个小细节,不能在给定初始值的同时还给定长度,即如下格式是不允许的:

int[] arr = new int[3]{
   1,2,3}

这是可以理解的,因为初始值已经决定了长度,再给个长

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ACCP(Aptech Certified Computer Professional)是印度最早从事IT职业教育的Aptech计算机教育公司推出的培养软件程序设计人员的课程体系,由北大青鸟集团于2000年引入中国。该课程体系通过结合先进的多模式教学法,使学习者在掌握理论知识与工具的同时,具备良好的自我学习能力和个人素质,成为符合21世纪企业要求的IT人才。   ACCP 6.0是北大青鸟APTECH推出的最新软件工程师职业教育课程,由中印两国软件技术专家联合研发完成。作为一款面向大众的求职系列教育产品,ACCP6.0的课程开发采用了全球同步机制,推陈出新,引领未来IT技术发展潮流,继续保持了北大青鸟APTECH ACCP课程体系的国际同步水平以及在国内IT职业教育领域的领导地位。   ACCP6.0的课程相对于ACCP5.0增加了DB2关系型数据库系统,DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。DB2具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows等平台下。 09年6月14日,IBM全球同步发布了一款具有划时代意义的数据库产品——DB2 9.5,而这款新品最大特点即是率先实现了可扩展标记语言(XML)和关系数据间的无缝交互,而无需考虑数据的格式、平台或位置。   ACCP6.0课程体系特色   1.分阶段训练:引领学员入门,加大训练量,训练学员程序逻辑和写代码的能力,夯实学员的基础;   2.分术业专攻:基础和思想决定了一个人含金量。要想在软件行业增强发展力,必须着重基础与理论知识。   3.分维度培养:从业务理解、经验积累、规范性、质量控制、团队意识和软件生命周期六个方面进行训练。   4.分层次深入:主要分为初次使用、理解加深和灵活应用这三个层次。学员理解为更为透彻,掌握更为牢固。   逆向设计确保就业——专业分析5362条招聘信息   ——深入访谈386家用人企业   ——定制2份行业人才需求标准简历   ——针对286项关键技能点逐一突破   ——斥资2000万,组织186名中美印专家投入研发   高强训练编程能力——1年半完成52000行代码编写   ——相当于1名程序员2年代码编写量   项目驱动案例贯穿——提供CRM、ERP中型项目实战训练   ——演练26项全真项目案例,贯穿8大行业   打造COT六脉神剑 ——训练目标清晰 训练手段多样   ——渗透学习过程 考核方法明确   ——接轨职场礼仪 积累职场经验
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bm1998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值