一. Java的历史与由来 原名Oak,针对嵌入式系统开发设计,语法与C/C++基本一致 二. Java语言特点 Java由四方面组成:Java编程语言.Java类文件格式.Java虚拟机和Java应用程序接口(Java API). 主要两点: 1. Java继承C++语言面向对象的核心,是纯粹的面向对象语言. 2. Java舍弃了指针.运算符重载等,增加垃圾回收机制,实现内存的自动分配管理 与C.C++主要的差别 1. 内存自动分配回收,C/C++中存在内存管理函数或者操作符malloc(),…
01 | 工作区和GOPATH 从 Go 1.5 版本的自举(即用 Go 语言编写程序来实现 Go 语言自身),到 Go 1.7 版本的极速 GC(也称垃圾回收器),再到 2018 年 2 月发布的 Go 1.10 版本对其自带工具的全面升级,以及可预见的后续版本关键特性(比如用来做程序依赖管理的go mod命令),这一切都令我们欢欣鼓舞.Go 语言在一步步走向辉煌的同时,显然已经成为软件工程师们最喜爱的编程语言之一. 我们学习 Go 语言时,要做的第一件事,都是根据自己电脑的计算架构(比如,是…
02 | 命令源码文件 我们已经知道,环境变量 GOPATH 指向的是一个或多个工作区,每个工作区中都会有以代码包为基本组织形式的源码文件. 这里的源码文件又分为三种,即:命令源码文件.库源码文件和测试源码文件,它们都有着不同的用途和编写规则. 对于 Go 语言学习者来说,你在学习阶段中,也一定会经常编写可以直接运行的程序.这样的程序肯定会涉及命令源码文件的编写,而且,命令源码文件也可以很方便地用go run命令启动. 那么,我今天的问题就是:命令源码文件的用途是什么,怎样编写它? 这里,我给出…
03 | 库源码文件 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话). 这里的"其他代码"可以与被使用的程序实体在同一个源码文件内,也可以在其他源码文件,甚至其他代码包中. 那么程序实体是什么呢?在 Go 语言中,程序实体是变量.常量.函数.结构体和接口的统称.我们总是会先声明(或者说定义)程序实体,然后再去使用. 比如在上一篇的例子中,我们先定义了变量name,然后在main函数中调用fmt.P…
04 | 程序实体的那些事儿(上) 还记得吗?Go 语言中的程序实体包括变量.常量.函数.结构体和接口. Go 语言是静态类型的编程语言,所以我们在声明变量或常量的时候,都需要指定它们的类型,或者给予足够的信息,这样才可以让 Go 语言能够推导出它们的类型. 问题:声明变量有几种方式? package main import ( "flag" "fmt" ) func main() { var name string // [1] flag.StringVar(&a…
05 | 程序实体的那些事儿(中) 在前文中,我解释过代码块的含义.Go 语言的代码块是一层套一层的,就像大圆套小圆. 一个代码块可以有若干个子代码块:但对于每个代码块,最多只会有一个直接包含它的代码块(后者可以简称为前者的外层代码块). 这种代码块的划分,也间接地决定了程序实体的作用域.我们今天就来看看它们之间的关系. 我先说说作用域是什么?大家都知道,一个程序实体被创造出来,是为了让别的代码引用的.那么,哪里的代码可以引用它呢,这就涉及了它的作用域. 我在前面说过,程序实体的访问权限有三种:…
06 | 程序实体的那些事儿 (下) 在上一篇文章,我们一直都在围绕着可重名变量,也就是不同代码块中的重名变量,进行了讨论.还记得吗? 最后我强调,如果可重名变量的类型不同,那么就需要引起我们的特别关注了,它们之间可能会存在"屏蔽"的现象. 必要时,我们需要严格地检查它们的类型,但是怎样检查呢?咱们现在就说. 我今天的问题是:怎样判断一个变量的类型? 我们依然以在上一篇文章中展示过的 demo11.go 为基础. package main import "fmt"…
Java语言基础(五) 一.浮点数 浮点数就是小数,其标准是IEEE 754,用指数和尾数表示 例如30000=3*10000=3*10^4  其中4是指数,3是尾数 Java中,浮点数有float ,double float 32位   1位符号位   8位指数  23位存储尾数   float精度为6~7位(223=8388608,一共7位,这意味着最多能有7位有效数字,但绝对能保证的为6位) double 64位  1位符号位   11位指数  52位存储尾数  double精度为15~1…
Java语言基础(四) 一.基本数据类型(8) byte  8位  使用较少,一般用于网络传输: -128-+127 short  16位 不常用 -32768-+32767 int  32位 常用  -2^31-+2^31-1  大概在 --21亿-+21亿 long  64位 float 32位 double 64位 char 16位 boolean 8位 (1).不能超范围计算 大家想一下,这个结果为什么是-128 ? byte补码的最大值是127 那么加上1 0  1  1  1  1 …
1.     Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,int, long ,float,double,char,boolean,void 用于定义数据类型值的关键字 true,false,null 用于定义流程控制的关键字 If,else,switch,case,default, while,do,for,break,continue,return 用于…