在我的第一篇文章开始了我们的第一个java程序HelloWorld,并简单的运行了该程序,这篇文章将详细的介绍java基础语法以及使用规范

一、java的主类结构

1.JAVA最基本的单位是类,所以在写代码之前必须先定义一个叫做的类的东西,格式:class 类名,举例:class HelloWorld
2.如果要在一个类中写代码就必须定义一个范围,这个范围使用{}
3.任何一个Java程序如果想要执行起来,就必须需要一个主方法(函数),格式:public static void main(String[] args){}

二、关键字

1.被Java语所赋予特定含义的单词

2.关键字的特点是全部小写

3.关键字在特殊的编辑器或者集成开发环境当中有特殊的颜色标识(goto和const作为保留关键字存在。)

Java语言用法 java的基本用法_变量名

三、标识符

1.给类、接口、变量等取名字时候用的单词(自定义标识符)
2.组成规则:“字下美人数骆驼”
A.字母
B.下划线
C.美元符号 $
D.人民币符号 ¥(不建议)
E.数组
F.实行驼峰命名法

3.注意事项:
a.不能以数字进行开头
b.不能是java中的关键字
c.严格区分大小写

4.标识符的命名规则:
a.类或者接口的命名:
单个单词:首字母大写,其余小写,举例:Hello
多个单词:每个单词的首字母大写,其余小写,举例:HelloWorld

b.方法或者变量的命名
单个单词:全部小写,举例:name
多个单词:从第二个单词开始,首字母大写,其余小写,举例:helloWorld

c.常量
单个单词:全部大写,举例:NAME
多个单词:全部大写,每个单词之间用下划线区分,举例:HELLO_WORLD

d.包的命名
Java的包名都有小写单词组成,类名首字母大写;包的路径符合所开发的 系统模块的 定义,比如生产对生产,物资对物资。以便看了包名就明白是哪个模块,从而直接到对应包里找相应的实现。(当我们使用idea的时候再讲)

上面的规则非强制性要求,但是是一种约定成俗的做法,必须遵守。而且务必遵守见名之意的做法。

四、常量

在程序的执行过程当中,其值不能发生任何改变的量,叫做常量

常量的分类:
字面值常量:就是只一个写死的数据/直接写出来的数据
自定义常量:final(面向对象的时候讲)

字面值常量的分类:
整数常量:所有整数,举例:12 52 36
小数常量:所有小数,举例:14.00 ,17.58 ,17.66666
字符常量:用单引号包裹起来的内容,举例:‘a’‘彦’
字符串常量:用双引号包裹起来的内容,举例:“周杰伦夕阳红团建”
布尔常量:这个比较特殊,只有两个值 true和false
空常量:空字符串也是字符串常量,空常量就是null,举例:null

问题1:
请问字符常量能否存储一个中文,为什么?
可以,因为Java采用的编码集是Unicode(国际通用编码集),而UNICODE的编码集其实也是Ascll的增强码,而Ascll对于中文来说,一个中文是两个字节,而两个字节恰好是一个字符。

注意事项:
1.字符串如果使用+进行拼接,如果左边的是字符串,右边的全部是字符串(实现的是拼接效果)

五、变量

在现实生活当中,有一些值是不断需要变化的。比如:年龄、头发、气温、游戏币、资产

变量:程序在执行过程当中,其值可以在一定范围内发生改变的量叫做变量
变量的作用:是用于存储同一种数据类型的容器

如何定义一个变量:
数据类型 变量名 = 初始化值;

使用变量需要注意的细节问题:
1.作用域(发挥作用的范围)
变量定义在哪一级的括号内,他生效的范围也仅仅只在这个范围,并且,同一个作用域不能出现同名的变量

2.初始值的问题
每一次初始值的变量是不能够直接使用,你只需要在使用它之前在任意时候给他赋值即可。

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

六、数据类型

Java是一款强类型语言,针对每一种不同的类型都提供了明确具体的数据类型

数据类型分类:
a.基本数据类型
b.引用数据类型(除了基本数据类型,其余所有都是引用数据类型)

基本数据类型:4类8种

byte、short、int、long类型:

整型常量的四种表示形式:

① 二进制整数:0B或0b开头(Java7的新特性),如:int a = 0B110;

② 八进制整数:要求以0开头,如 int a = 012;

③ 十进制整数:如:int a = 17;

④ 十六进制整数:要求0X或0x开头,如int a = 0x12;

Java语言的整型常量默认是int型,声明long型变量后加上‘l’或‘L,因小写的l容易和数字1相混淆,建议使用大写L。

默认情况下,一个整型的字面量默认是int类型.

Java语言用法 java的基本用法_Java语言用法_02


float、double类型:

表示小数类型又称为浮点类型,其中float表示单精度类型,double表示双精度类型,但是二者都不能表示精确的小数。Java的浮点类型常量有两种表现形式:

十进制形式: 例如:3.14 ,168.0, .618

科学计数法形式: 例如:3.14e2, 3.14E2, 1000E-2

科学计数法表达式返回的结果是double类型。默认情况下,一个浮点类型的字面量默认是double类型.若要声明一个常量为float型,则需在常量后加上f 或 F,double常量后面的D或d可省略。

注意:Java里只有浮点型的变量才可以接受科学计算式结果:

因为float和double都不能精确的表示小数,那么在精度要求高的系统比如银行系统里,那怎么表示精确的小数呢?后面我们会讲BigDecimal类型,它表示任意精度的数据。

Java语言用法 java的基本用法_变量名_03


boolean类型:

通常用于逻辑运算和程序流程控制。该类型的值只能是true 或 false,表示真或假。不可以使用0或非0的整数来代替false和true,区分于C语言。(其实在JVM中对boolean的处理也是用0表示false,非0表示true的。)

false和true是boolean的常量。

Java语言用法 java的基本用法_Java_04

类型转换

在同一行上定义多个变量的问题
隐式类型转换(自动类型转换):数据类型从小到大自动转换,无需干预。
a.byte,short,char->int->long->float->doble
b.byte,short,char相互之间不参与转换,一旦参与运算,会直接提升为int类型

强制类型转换:从大到小需要进行强制类型转换
格式:目标数据类型 变量名 = (目标数据类型) 需要转化的数据;

思考题1
看看下面的代码有没有区别
float f1 =(float)12.345;float f2 = 12.345f;

有区别,f1其实是从一个double类型转换成float,f2是在声明的时候,就已经定义为float

思考题2
byte b1=3,b2=4,b;b=b1+b2;b=3+4;哪句是编译失败的呢?为什么呢?
b = b1 + b2;是存在问题的,以为两个变量的相加是先看数据类型的问题,然后在把最终的结果赋值给需要接收的变量(前提是数据类型是兼容的),常量相加,首先先做加法运算,然后在将结果赋值给需要接收的变量。

思考题3
byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?

有问题,因为byte的取值范围-128~127,130已经超出,但可以使用强制类型转换,byte b =(byte) 130;但结果确是-126。

如果我们需要了解为什么是-126的话,我们需要知道什么是进制转换,什么是原码,什么是反码,什么是补码,其实也就像个尺子 -128 、-127、 -126、 -125、…0…125、 126、 127,溢出后的数据“从头开始”所以是-126.

七、注释

注释的分类:
单行注释: // 被注释的内容
多行注释: /* 被注释的内容 */
文档注释: / ** 被注释的内容 */

注释需要注意的细节:
1.单行注释允许存在嵌套
2.多行注释,不能继续包含多行注释
3.我们的多行注释一般写在被注释的代码的上面,单行注释一般写在被注释的代码的右边(但是,你们爱咋咋滴)

下面的不是同一行定义多个变量
int a = 10;int b =20;int c = 30;
int a = 10,b = 20,c = 30;

同一行上定义多个变量,这种同一行上定义多个变量,建议你们打死都不要用,不推荐,不利于代码的阅读,同时也对程序的扩展和改变极大的限制了

八、进制

进位制,是人们规定的一种进位方法。 对于任何一种进制–X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。

不同进制的体现:
二进制:由0和1组成,以0b开头
八进制:由0-7表示 以0开头
十进制:由0-9表示 默认
十六进制:有0-9,a-f组成 以0x