-1-1 java 基础语法 java关键字 java 注释 常量 语句 运算符 函数 数组定义

Java语言基础组成  

关键字 标识符 注释 常量和变量 运算符 语句 函数 数组

关键字

定义:被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

用于定义访问权限修饰符的关键字

private

protected

public

用于定义类,函数,变量修饰符的关键字

abstract

final

static

synchronized

用于定义类与类之间关系的关键字

extends

implements

用于定义建立实例及引用实例,判断实例的关键字

new

this

super

instanceof

用于异常处理的关键字

try

catch

finally

throw

throws

用于的关键字

package

import

其他修饰符关键字

native

strictfp

transient

volatile

assert

goto和const作为保留字存在。

标识符

程序中自定义的一些名称,变量名,类名,方法名等

字符/数字/下划线/$/  组成  不可以使用关键字 不允许以数字开头    严格区分大小写

$为了规范不要使用

规范的形式:

包名:多单词组成时所有字母都小写。 xxxyyyzzz 类名接口名:多单词组成时,所有单词的首字母大写。 XxxYyyZzz 变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。 xxxYyyZzz 常量名:所有字母都大写。多单词时每个单词用下划线连接。 XXX_YYY_ZZZ

注释

注解说明解释程序的文字就是注释,简单说就是给人看,而不是给机器看的

Java中的注释格式:

•单行注释

•格式: //注释文字

•多行注释

•格式: /* 注释文字 */

•文档注释

•格式:/** 注释文字 */

对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。

对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,

生成一套以网页文件形式体现的该程序的说明文档。

注释是必须要做的,除非你的代码自注释非常好

常量与变量

常量表示不能改变的数值。

Java中常量的分类:

1,整数常量。所有整数

2,小数常量。所有小数

3,布尔(boolean)型常量。较为特有,只有两个数值。true false。

4,字符常量。将一个数字字母或者符号用单引号( ' ' )标识。

5,字符串常量。将一个或者多个字符用双引号(“ ”)标识。

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

对于整数:有四种表现形式。

•二进制:0,1 ,满2进1.

•八进制:0-7 ,满8进1. 用0开头表示。

•十进制:0-9 ,满10进1.

•十六进制:0-9,A-F,满16进1. 用0x开头表示。

负数的二进制表现形式--对应的正数二进制取反加1

变量的概念:

•内存中的一个存储区域

•该区域有自己的名称(变量名)和类型(数据类型)

•该区域的数据可以在同一类型范围内不断变化

为什么要定义变量:

•用来不断的存放同一类型的常量,并可以重复使用

使用变量注意:

•变量的作用范围(一对{}之间有效)

•初始化值

定义变量的格式:

•数据类型    变量名 =  初始化值;

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

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

     长整数要加L或者l

     单精度的浮点数要加F或者f

char  2个字节    boolean  1个字节

类型转换

自动类型转换/强制类型转换

表达式的数据类型自动提升

•所有的byte型、short型和char的值将被提升到int型。

•如果一个操作数是long型,计算结果就是long型;

•如果一个操作数是float型,计算结果就是float型;

•如果一个操作数是double型,计算结果就是double型。

可以这么理解,double > float > long > 其他  

从左到右,有左边的那就没右边的事儿了   其他里面不管是什么,都是int

也就是byte,short,char之间不相互转换,直接转成int类型参与运算

short s=1, s = s+1; 编译不通过 1是int s+1自动提升为int int赋值给short 报错

short s=1, s+=1;  +=是一个操作符,不涉及到类型的提升,也可以理解为相当于s = (short)(s + 1)

也就是隐含了自动强制转换

运算符

算术运算符/赋值运算符/比较运算符/逻辑运算符/位运算符/三元运算符

算术运算符

如果对负数取模,可以把模数负号忽略不记,如:5%-2=1   但被模数是负数就另当别论。

换句话说是符号跟%前面的一致

整数之间除号“/” 是取整

“+”除字符串相加功能外,还能把非字符串转换成字符串,如果与字符串+ 可以当做是连接符

赋值运算符

= , +=, -=, *=, /=, %=

右边的赋值给左边变量    X= 运算符的形式aX=b; 等同于   a=aXb;  X为+  -  *  /  %

比较运算符

结果只有true或者false 两种

逻辑运算符

逻辑运算符用于连接布尔型表达式   Java中不可以写成1<x<8,应该写成x>1 & x<8 。

或只要有一个为真则为真

与两个都为真才为真

单个的不会短路,也就是无论如何两侧都会计算

双个的会短路 一旦结果可以推断出来,不在继续计算

异或是两个不同才为真

位运算符

直接对二进制进行运算

<<

左移

空位补0,被移除的高位丢弃,空缺位补0。

>>

右移

被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,空缺位补1。

>>>

无符号右移

被移位二进制最高位无论是0或者是1,空缺位都用0补。

&

与运算

二进制位进行&运算,只有1&1时结果是1,否则是0;

|

或运算

二进制位进行   | 运算,只有0 | 0时结果是0,否则是1;

^

异或运算

相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0 不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1

~

反码

一个数据针对另一个数据位异或两次,该数不变

移位运算可以快速乘除2的N次方

三元运算符

格式 (条件表达式)?表达式1:表达式2; 如果条件为true,运算后的结果是表达式1; 如果条件为false,运算后的结果是表达式2;

运算符的优先级(从高到低)

如果在程序中,要改变运算顺序,可以使用()。

优先级

描述

运算符

1

括号

()、[]

2

正负号

+、-

3

自增自减,非

++、--、!

4

乘除,取余

*、/、%

5

加减

+、-

6

移位运算

<<、>>、>>>

7

大小关系

>、>=、<、<=

8

相等关系

==、!=

9

按位与

&

10

按位异或

^

11

按位或

|

12

逻辑与

&&

13

逻辑或

||

14

条件运算

?:

15

赋值运算

=、+=、-=、*=、/=、%=

16

位赋值运算

&=、|=、<<=、>>=、>>>=

语句

顺序结构/选择结构(分支结构/判断结构)/循环结构

顺序结构

顺序就是自上而下按照顺序执行语句

选择结构

if语句

三种形式: if(条件表达式){         执行语句; }

if(条件表达式){         执行语句; }else {         执行语句; }

if(条件表达式){       执行语句; }  else if (条件表达式){      执行语句; }  …… else {   执行语句;  }

if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条,不能省略

建议永远不要省略

switch语句

格式:

switch(表达式) { case 取值1: 执行语句; break; case 取值2: 执行语句; break; …... default: 执行语句; break; }

switch语句选择的类型:byte,short,int , char JDK5增加枚举  JDK7增加String

case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的

case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。

结束switch语句的两种情况:    遇到break,执行到switch语句结束

如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。

default可以省略,但是最好不要,除非你很确定结果

循环结构

while(条件表达式) { 执行语句; }

do while语句格式:

do { 执行语句; }while(条件表达式);

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

for

for(初始化表达式;循环条件表达式;循环后的操作表达式) { 执行语句;(循环体) }

先执行初始化表达式,然后就是判断条件,操作,判断条件,操作.....

与这种while等价:

   初始化语句;    while(判断条件语句) {          循环体语句;          控制条件语句;     }

虽然形式上可以互换,但是for中的变量结束后消亡,while中继续存活

for更适合个数有限的 while更适合次数不明的

while(true)    for(;;),无限循环

优先考虑for

break(跳出),  continue(继续)  return  返回退出方法

break语句:应用范围:选择结构和循环结构。 中断当前

continue语句:应用于循环结构。  跳出当次循环继续执行

break continue还可以带标签   没有什么必要用

函数

什么是函数?

函数就是定义在类中的具有特定功能的一段独立小程序。

函数也称为方法。

函数的格式:

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...)         {                         执行语句;                         return 返回值;         }         返回值类型:函数运行后的结果的数据类型。         参数类型:是形式参数的数据类型。         形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。         实际参数:传递给形式参数的具体数值。         return:用于返回结束函数。         返回值:该函数运算后的结果,该结果会返回给调用者。

函数特点

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

方法重载 overload

在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。

与返回值类型无关,只看参数列表。

数组

数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。

数组既可以存储基本数据类型,也可以存储引用数据类型。

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

格式2: 元素类型[]   数组名 = new 元素类型[]{元素,元素,……}; int[]   arr = new int[]{3,5,1,7}; int[]   arr = {3,5,1,7};

多维数组

格式1 •数据类型[][] 变量名 = new 数据类型[m][n]; •m表示这个二维数组有多少个一维数组 •n表示每一个一维数组的元素个数 •举例: •int[][] arr = new int[3][2]; •定义了一个二维数组arr •这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2] •每个一维数组有2个元素,可以通过arr[m][n]来获取 •表示获取第m+1个一维数组的第n+1个元素

格式2 •数据类型[][] 变量名 = new 数据类型[m][]; •m表示这个二维数组有多少个一维数组 •这一次没有直接给出一维数组的元素个数,可以动态的给出。 •举例: •int[][] arr = new int[3][]; •arr[0] = new int[2]; •arr[1] = new int[3] •arr[2] = new int[1];

格式3 •数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}}; •简化版格式: •数据类型[][] 变量名 = {{元素…},{元素…},{元素…}}; •举例: •int[][] arr = {{1,2,3},{4,6},{6}};

还有多维数组

                int[][][][][][][] arr = new int[8][7][6][5][4][3][2];

其实不管多少维数组,都是二维数组   只不过是嵌套了多层,都是数组的数组,数组的元素仍旧是数组

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玄魂工作室

输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字

要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和...

26210
来自专栏CSDN技术头条

常见的七种排序算法解析

01 选择排序 实现原理 首先从未排序序列中找到最小的元素,放置到排序序列的起始位置,然后从剩余的未排序序列中继续寻找最小元素,放置到已排序序列的末尾。所以称之...

21080
来自专栏Esofar 开发日记

JavaScript权威指南 - 数组

JavaScript数组是一种特殊类型的对象。 JavaScript数组元素可以为任意类型,最大容纳232-1个元素。 JavaScript数组是动态的,有...

9440
来自专栏Brian

C++ Virtual And Pure Virtual Explained

---- Virtual Virtual Function是成员函数,其行为在派生类中被覆盖。与非虚函数不同的是,即使没有关于类的实际类型的编译时信息,也会保留...

35960
来自专栏Android干货

Python高级特性:迭代

--------------------------------------------------------------------------------...

8710
来自专栏cmazxiaoma的架构师之路

一个Java小白通向数据结构算法之旅(7) - 简单排序总结

15430
来自专栏猿人谷

qsort(),sort()排序函数

一.qsort()函数 功 能: 使用快速排序例程进行排序 头文件:stdlib.h 用 法: void qsort(void *base,int nelem,...

26380
来自专栏coder修行路

可迭代对象、迭代器、生成器的理解

所有的生成器都是迭代器 关于迭代器和生成器的一种定义:迭代器用于从集合中取出元素;生成器用于凭空生成元素。 Python中,所有的集合都是可以迭代的,在Pyth...

210100
来自专栏尾尾部落

[剑指offer] 数组中重复的数字

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复...

10530
来自专栏C/C++基础

正则表达式简介

正则表达式(Regular Expression),又称规则表达式,在代码中常简写作regex、regexp或RE。正则表达式通常用来检索、替换那些符合某个模式...

10840

扫码关注云+社区

领取腾讯云代金券