Java编程之基础组成

学习时的苦痛是暂时的,未学到的痛苦是终生的。

下面先来看下基础知识导图

基础组成:关键字、标识符、注释、常量和变量、运算符、语句、函数、数组

1. 关键字的定义和特点:

定义:被 Java 语言赋予了特殊含义的单词;

——(一群出生就在Java帝国带身份的家伙)

特点:关键字中所有字母都为【小写】;

2. 标识符:

定义:在程序中自定义的一些名称。

组成部分:由 26 个英文字母大小写,数字:0-9,符号 _$组 成;

定义合法标识符规则:数字不可以开头、不可以使用关键字,Java中严格区分大小写;

注意:在起名时,为了提高阅读性,要尽量有意义。

Java 中的名称规范:

包名:多单词组成时所有都小写,如:abc;

类名接口名:多 单词组成时,所有单词的首字母大写,如:AaBbCc;

变量名和函数名:多单词组成时,第 一个单词首字母小写,第二个单词开始个 单词首字母大写,如:aaBbCc;

常量名:所有 字母都大写,多单词时每个单词用下划线连接 如:AA_BB_CC。

3. 注释:

对于单行和多行注释,被注释的文字,不会被 JVM(Java 虚拟机)解释执行;对于文档注释,是Java特有的注释,其中注释内容可以被JDK提供的工具 javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档;注释是一个程序员必须要具有的良好编程习惯;初学者编写程序可以养成习惯;先写注释再写代码;将自己的思想通过注释先整理出来,再用代码去体现;因为代码仅仅是思想的一种体现形式而已;用于注解说明解释程序的文字就是注释;提高了代码的阅读性。

Java 中的注释格式:

单行注释:格式://注释文字;

多行注释:格式:/*注释文字*/;

文档注释:格式:/**注释文字*/。

4.1. 常量:

定义:表示不能改变的数值。

Java 中常量的分类:

整数常量:所有整数;

小数常量:所有小数;

布尔型常量:较为特 有,只有两个数值:true 和 false;

字符常量:将一个数字字母或者符号用单引号(’’)标识;

字符串常量:将一个或者多个字符用双引号(””)标识;

null 常量:只有一个数值就是 null。

对于整数:

Java 有三种表现形式:十进制:0-9,满 10 进 1;八进制:0-7,满 8 进 1,用 0 表示开头;十六进制:0-9,A-F,满 16 进 1,用 0x 开头表示。

4.2. 变量:

变量的概念:内存中的一个存储区域;该区域有自己的名称(变量名)和类型(数据类型);该区域的数据可以在同一类型范围内不断变化;

理解:变量就如同数学中的未知数;

变量:就是将不确定的数据进行存储,也就是需要在内存中开辟一个空间。

为什么要定义变量:用来不断的存放同一类型的常量,并可以重复使用。

使用变量注意:变量的作用范围【一对{}之间有效】初始化值。

定义变量的格式:数据类型变量名 = 初始化值

注:格式是固定的、记住格式,以不变应万变

Java 语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配 了不同打小的内存空间。

数据类型:基本数据类型(数值型(整数类型【byte、short、int、long】

浮点类型(float,double)、字符型(char)、布尔型(boolean)、引用数据类型【类 (class) 、接口(interface)、数据([])】

注意:整数默认:int,小数默认:double。

数据类型空间:

byte 8 位二进制【一个 8 位二进制或 1 个字节】

short 16 位二进制【二 个 8 位二进制或 2 个字节】

int 32 位二进制【四个 8 位二进制或 4 个字节】

long 64 位二进 制【八个 8 位二进制或 8 个字节】

float(单精度)32 位二进制【四个 8 位二进制或 4 个字 节】

double(双精度)64 位二进制【八个 8 位二进制或 8 个字节】

char 取值:0-65535

boolean 取值:true,false。

类型转换:不同类型的数据不能进行运算。需要进行数据类型提升,从小往大提升,自 动数据类型提升。

强制类型转换:

格式:变量=(类型名)(需转换的数据) ;

什么时候使用强制转换:如:小数保留整数部分。

表达式的数据类型自动提升:所有的 byte 型、short 型和 char 的值将被提升到 int 型; 如果一个操作数是 long 型,计算结果就是 long 型;如果一个操作数是 float 型,计算结果就 是 float 型; 如果一个操作数是 double 型, 计算结果就是 double 型。

5. 运算符:

算数运算符:+正号,-负号,+加,-减,*乘,/除,%取模,++自增(前) ,++自增(后) , --自减(前) ,--自减(后) ,+字符串相加(字符串数据和任何数据使用+都是相连接,最终 都会变成字符串)

转义字符:通过\ 来转变后面字母或者符号的含义。

在 Linux 系统中换行是一个字符来 表示\n,windows 系统中,换行由\n\r 实现。\n:换行。\b:退格。相当于 backspace 键。

\r: 按下回车键 \t:制表符。相当于 tab 键。

赋值运算符:

符号:

=:赋值,

+=:a+=5 等价于 a=a+5,-=,*=,/=,%=

比较运算符:

==:相等于

!=:不等于

>:大于

>=:大于 等于

instanceof:检查是否是类的对象。

如:Boolean boolean = DogClass instanceof AnimalClass

注意:比较运算符的结果都是 boolean 型,也就是要么是 true,要么是 false;比较运算符“==”不能误写成“=” 。

逻辑运算符:

&:AND(与)两边的【boolean】表达式结果,有一个为 false,那么结果就是 false,只要两边都为 true,结果为 true;

:OR(或)两边的【boolean】表达式结果,只要 有一个为 true, 结果为 true, 只有两边都有 false, 结果为 false;

^: XOR (异或) 两边的 boolean 表达式结果相同结果为 false,两边不同结果为 true;

! :NOT(非) ;

&&:AND(短路) ;

OR: (短路) 。逻辑运算符用于连接 boolean 类型的表达式。

&和&&的特点:&:无论左边是真是 假,右边都运算;&&:当左边为假时,右边不运算。

和的特点::两边都做运算;: 但左边为真时,右边不运算。

位运算符:

>>:右移,如:6>>2=1 等价于 6/2^2=1;

>>>:无符号右移,如:3>>>1=1;

&:与运算,如:6&3=2;

:或运算,如:63=7;

^:异或运算,如:6^3=5;

~:反码,如:~6=-7;位运算是直接对二进制进行运算。

>>:就是除以 2 的移动的位数次幂。

>>:最高位补什么由 原有数据的最高位值而定;如果最高位 0,右移后,用 0 补空位;如果最高位 1,右移后, 用 1 补空位。

>>>:无论最高位是什么,右移后,都用 0 补。一个数异或同一个数两次,结 果还是拿个数。

三元运算符:

格式:(条件表达式)表达式 1表达式 2

如果条件为 true,运算后的 结果是表达式 1;如果条件为 false,运算后的结果是表达式 2。

如:获取两个数中大数,int x=3,y=4,z; z=(x>y)? x:y//z 变量存储的就是两个数的大数。

6. 语句

if 语句:

程序流程控制:顺序结构,判断结构,选择结构,循环结构。

判断结构:

if语句三种格式:

一层判断:if(条件表达式)

两层判断:if(条件 表达式)else{ 执行语句;};

多层判断:if(条件表达式)else if(条件表达 式)else。

ifelse 结构间歇格式:变量=(条件表达式)?表达式 1:表达式 2;

三元运算符:

好处: 可以简化 if else 代码

弊端:因为是一个运算符,所以运算完毕需要有一个结果

解决 DOS 命令下,编译无法识别 GDK 码方法:

方法一:使用-encoding 参数指明编码方 式:javac -encoding UTF-8 XX.java。方法二:保存 java 文件时,选择编码格式为 ANSI。

switch 语句

选择结构:switch 语句:

格式:switch(表达式)

switch(表达式) :表达式只接收五种类型:byte,short,int,char,string【jdk 1.7之后添加了string类型】

if 语句与 switch 语句的区别:if 除了能判断数值,还能判断具体区间,switch 判断区间 很累;对于数字是布尔型时,只有 if 能判断。

if 语句与 switch 语句的用法:如果要对具体数字进行判断,数值不多,而且符合 byte、 short、int、char,string 这五种类型,虽然两个语句都可以使用,建议用 switch 完成。因为效率稍高。其他情况一般用 if。当结果为布尔型或区间时,用 if 完成。If 的使用范围更广。

while 语句

循环结构:

代表语句:while、do while、for

while 语句格式:while(条件表达式)。

do while 语句格式:dowhile(条件表达式) ;

do while 特点是条件无论是否满足,循环体至少被执行一次。

while 和 do while 的区别:

while:先判断条件,只有条件满足才执行循环体。

do while: 先执行循环体,再判断条件,条件满足,再继续执行循环体。

简单一句话:do while:无论条件是否满足,循环体至少执行一次。

for 语句

for 语句格式:

for (初始化表达式; 循环条件表达式; 循环后的操作表达式)

注意:

a:for 里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真 就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程, 直到条件不满足为止。

b:while 与 for 可以互换,区别在于 for 为了循环而定义的变量在 for 循环结束就是在内存中释放。而 while 循环使用的变量在循环结束后还可以继续使用。c: 最简单无限循环格式:while(true) ,for( ; ; ) ,无限循环存在的原因是并不知道循环多少 次,而是根据某些条件,来控制循环。

for 和 while 的区别:

a:变量有自己的作用域。对于一个变量来将,如果这个变量仅仅 用于控制循环的次数,用作循环增量时用 for 语句。循环结束时,该变量在内存被释放。用 于优化内存。

b:for 和 while 可以进行互换,如果定义循环增量,用 for 更为合适。

什么时候使用循环结构?当要多某些语句执行很多次时,就是用循环结构。

循环注意:一定要明确哪些语句需要参与循环,哪些不需要。

两种思想:累加思想:原理:通过变量记录住每次变化的结果。通过循环的形式,进行 累加动作。

计数器思想:

原理:通过一个变量记录住数据的状态变化。也通过循环完成。

循环嵌套:语句嵌套形式,其实就是语句中含有语句。

其他流程控制语句:break(跳出) ,continue(继续) 。

Break 语句:应用范围:选择结 构和循环结构。Continue 语句:应用于循环结构。

注意:

a:这两个语句离开应用范围,存 在是没有意义的。

b: 这两个语句单独存在下面都不可以有语句,因为执行不到。

c:continue 语句是结束本次循环继续下次循环。

d: 标号的出现, 可以让这两个语句作用于指定的范围。

注意:标号只能用于循环语句上,给循环起名字。

continue:只能作用于循环结构。继续循环。

特点:结束本次循环,继续下一次循环。

总结:

a:break 和 continue 语句作用的范围。

b:break 和 continue 单独存在时,下面可以有任何语句。因为都执行不到。

7. 函数

函数的定义:什么是函数?函数就是定义在类中的具有特定功能的一段独立小程序;函数也称为方法。

函数的格式: 修饰符返回值类型函数名 (参数类型形式参数 1, 参数类型形式参数 2, ?) 。

返回值类型:函数运行后的结果的数据类型。

参数形式:是 形式参数的数据类型。

形式参数: 是一个变量, 用于存储调用函数时传递给函数的实际参数。 实际参数:传递给形式参数的具体数值。

Return:用于结束函数。

返回值:该值会返回给调 用者。

函数的特点:定义函数可以将功能代码进行封装;便于对该功能进行复用;函数只有被 调用才会被执行;函数的出现提高了代码的复用性;对于函数没有具体返回值的情况,返回 值类型用关键字 void 表示,那么该函数中的 return 语句如果在最后一行可以省略不写。

注意:函数中只能调用函数,不可以在函数内部定义函数;定义函数时,函数的结果应该返回 给调用者,交由调用者处理。

重点:函数的应用。如何定义一个函数呢?

a:既然函数是一个独立的功能,那么该功 能的运算结果是什么先明确。因为这是在明确函数的返回值类型。

b:再明确在定义该功能 的过程中是否需要未知的内容参与运算。 因为是在明确函数的参数列表 (参数的类型和参数 的个数) 。

函数的重载(overload) :重载的概念:在同一个类中,允许存在一个以上的同名函数, 只要它们的参数个数或者参数类型不同即可。

重载的特点:与返回值无关,只看参数列表。

重载的好处:方便与阅读,优化了程序设计。

重载示例://返回两个整数的和 int add(int x,int y);//返回三个整数的和 int add(int x,int y,int z);//返回两个小数的 和 double add(double x,double y)。

什么时候用重载?当定义的功能相同,但参与运算的未知内容不同。那么,这时就定义 一个函数名称以表示其功能,方便阅读,而通过参数列表的不同来区分多个同名函数。

8. 数组

数组的定义:概念:同一种数据类型的集合。其实数组就是一个容器。

数组的好处:可以自动给数组中的元素从 0 开始编号,方便操作这些元素。

关键字:new:用来在内存中产 生一个容器实体。

格式一:元素类型[]数组名=new 元素类型[元素个数或数组长度];示例: int [] arr=new int[5];

格式二:元素类型[]数组名=new 元素类型[];

示例: int[] arr=new int[];int[] arr=。

内存结构:Java 程序在运行时,需要在内存中分配空间。为了提高运行效率,又对空间 进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存的管理方式。

A: 栈内存(栈区) :用于存储局部变量,当数据使用完,所占空间会自动释放。

B:堆内存(堆 区) :数组和对象,通过 new 建立的实例都存放在堆内存中。每一个实体都有内存地址。实 体中的变量都有默认初始化值。实体不在被使用,会在不确定的时间内被垃圾回收器回收。

C:方法区,本地方法区,寄存器。

获取数组中的元素。通常会用到遍历。

数组中有一个属性可以直接获得到数组元素个数——length。

使用方式:数组名称.length。

数组排序:

选择排序:内循环结束一次,最值出现头角标位置。

冒泡排序:第一圈:最 值出现在了最后位。

二维数组:

数组中的数组:

格式一:int[][] arr=new int[3][2];定义了名称为 arr 的二维数组;二维数组中有 3 个一维数组;每一个一维数组中有 2 个元素;一维数组的名称分别为 arr[0],arr[1],arr[2];给第一个一维数组 1 脚标位赋值为78 写法是:arr[0][1]=78。

格式二: int[][] arr=new int[3][];二维数组中有 3 个一维数组;每个一维数组都是默认初始值 null;可 以对这个三个一维数组分别进行初始化: arr[0]=new int[3]; arr[1]=new int[1]; arr[2]=new int[2]。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180202G08MAH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动