Java基础语法(1)

java基础语法

1.关键字的特点:
组成关键字的字母全部是小写,其中main不是关键字,尽管它被java虚拟机所识别,但是它不是关键字。


2.标识符
(1).概述:就是给你所需要的变量或者是方法或者是类取一个区别于其他的名称。

(2).组成规则:
英文字母大小写
数字字符
$和_

(3).注意事项:
不能够以数字开头
不能够是java中的关键字,而且java语言严格区分大小写


3.标识符命名规则

(1).包的出现的原因:其实就是文件夹,为了解决相同类名的问题。

(2).命名的需求:见名知意

(3).几个层次的命名规则:

包:
单级包:com
直接命名,一般使用小写

多级包:com.itcast
中间使用"."来分隔开来


类或者接口:
一个单词组成:单词的首字母必须大写
如:Student、Dog

多个单词组成:每一个单词的首字母都需要大写
如:HelloWord、StudentName

方法或者变量:
一个单词:单词的首字母小写
如:age,main
多个单词:从第二个单词开始,每一个单词首字母大写
如:studentAge,showAllName

常量:
一个单词:全部大写
如:AGE
多个单词:每一个都大写,中间使用"_"隔开
如:STUDENGT_AGE


4.java中注释

(1).注释分类:

<1>.单行注释: //注释内容

<2>.多行注释: /*注释内容*/

<3>.文本注释: 主要是被javadoc工具解析成为一个说明书。

如果是一个初学者,在编写代码的时候,可以先写出相关的注释,然后再使用代码来体现。

(2).注释的作用

<1>.调试程序:能够通过注释把不同的内容,编译程序,然后开始查找需要修改的内容。这样可以比较快的调试内容。

<2>.解释说明程序,提高程序的阅读性。

5.常量

(1).常见的常量分类以及举例:

<1>.字面值常量:

A:字符串常量:用双引号括起来的内容
举例:"hello","world"

B:整数常量(表示所有的整数)
举例:12,123

C:小数常量(表示所有的小数)
举例:12.234,15.234

D:字符常量:用单引号括起来的内容,而且里面的内容个数只能够为1个(注意这里面的0如果说是被单引号括起来的,那么它也是一个字符常量)
举例:'a','A','0'

E:布尔常量:布尔常量比较特殊,其值只有俩个:true或者是false

F:空常量:null


(2).使用举例:
在使用调用测试的时候一般都会输出System.out.println("1"); //这一个表示的是输出一个字符串,而这一个字符串的内容所填写的是1

6.进制表示以及使用测试

不同进制的数据表现形式:

二进制:数据是由0,1组成,而且是以0b开头。
八进制:数据是由0,1...7所组成,而且在表现是八进制的时候是以0开头
十进制:数据是由0,1...9所组成,默认的整数就是10进制的,也就是不加任何的标记,数字所表示的就是十进制。
十六进制:数据是由:0,1...9,a,b,c,d,e,f(大小写均可)组成。而且是以0x作为开头。

使用举例:
输出由100表示的各个进制的数值是多少:
System.out.println(100); //十进制

System.out.println(0b100); //二进制:计算方法:0x2的0次方+0x2的1次方+1x2的2次方
System.out.println(0100); //八进制
System.out.println(0x100); //十六进制


7.源码、反码、补码的基本介绍:

(1)使用概述:在计算机内部,有符号数一般有三种标识方式:源码、补码、反码;由于计算机在进行计算的时候都是使用二进制的补码来就算的,所以需要学习相关内容。

(2)相关知识:
源码:
.就是二进制定点表示方法,即最高位为符号位,"0"表示正,"1"表示负,其余位表示数值的大小。

反码:
.正数的的源码与反码相同,负数的反码就是针对其源码逐个位置取反,但是符号位除外。

补码:
.正数的补码与源码相同,而负数的补码就是在反码的末位加1。

8.变量以及数据类型

变量

(1).什么是变量
变量就是指在程序的执行过程中,其值在一定的范围内可以发生改变的存储空间。

(2).变量的组成
变量其实是程序为一个特定名称(变量名)所开辟的一个存储空间,我们可以往这一个空间放置一些该存储空间所定义的数据类型的数据,所以
变量的组成就需要三个基本元素:变量名、变量的数据类型、变量存储的值。如果一个变量不具备这三个条件,那么它将没有意义或者是无法
使用。

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



数据类型
(1).java中数据进行数据计算的时候是取出存储空间中存在的数据,而不是拿着存储空间进行运算。

(2).由于一个变量参与运算是拿这一个变量所对应的值节去进行运算,所以说如果这一个变量的存储空间中没有值的话,去拿值就变得毫无意义,所以就要求对每一个变量都要进行初始化。


(3).数据类型

<1>.概述:java是属于强数据类型,对于每一个变量的定义都要求必须要定义相应的类型。对于每一种数据类型的定义,都是分配了不同的大小的内存储空间。

<2>.分类

A:基本的数据类型:
.整数:
byte: 1字节(2的7次方) 表示数的范围:-128---127
short: 2字节(2的15次方) 表示数的范围:-(2的15次方)---(2的15次方)-1
int: 4字节(2的31次方)
long: 8字节(2的63次方(8x8-1个字节))
.浮点数:
float: 4字节 表示数的范围:-3.403(乘以10的38次方)----3.403(乘以10的38次方)
double: 8字节
.字符数据:
char: 2字节
.布尔型
boolean: 1字节

默认情况:整数默认是int类型,浮点数默认是double类型。

B:引用的数据类型:
.类
.接口
.数组

//注意事项:float数据在进行存储的时候也是按照二进制来进行存储的(小数的形式存储),只不过是按照科学计数法的格式来存储(即小数位进行存储+次方位进行存储)

使用举例:把17.625转化为二进制表示为:10001.101

整数部分:除以2,直到商为0
小数不封;乘以2,进位顺序取值



<3>.使用举例:
在使用long类型定义数据的时候,由于数据默认使用的是int类型,如果说给定的数字的范围超过了int的范围,这一个这一个时候就会报错,所以在定义long类型的时候,我们建议
在数据后面添加一个"L"来区分是int类型还是long类型.

在定义float单精度类型的时候,建议使用F来标记数据类型。


(3).数据类型的使用注意事项

<1>.作用于问题:
变量定义在哪一个大括号"{}"内,在使用的时候就在那一个大括号内有效,并且在同一个大括号内是不能够定义俩个同名的变量的。

<2>.初始化值的问题:
在定义变量的时候由于其存在的存储关系,所以我们在使用的时候就必须要对其进行初始化操作。(这里面需要注意的是:只要在你使用之前就给值,不一定在你定义的时候就会给值,但是还是推荐定义的时候就给值)


(4).数据类型之间存在的转化问题

<1>.数据之间进行运算的时候要求数据类型是一样的。

<2>.如果说数据类型之间不一致的时候就需要进行数据转化。

默认转化:(小---->大)
byte,short,char-->int-->long-->float-->double

规则:
byte,short,char(小类型)参与运算的时候都是首先转成int类型,彼此之间不转化,在区参与运算;
而int,long,float,double这四个是什么类型就是什么类型,参与运算的时候不会变化。其中flaot所能够表示的数值比long大,所以能够进行转化。(而且底层存储数据结构不同)

强制转化:(大----->小)

格式:目标数据类型 变量 = (目标数据类型) (被转化的数据);
在数据使用的时候不建议使用强制转化,因为这样就意味着精度可能会丢失。


(5).相关的面试题

<1>.数据转化的相关问题

/*
面试题:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
b = b1 + b2;是有问题的。
因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。
常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。
*/
class DataTypeDemo6 {
public static void main(String[] args) {
//定义了三个byte类型的变量,b1,b2,b3
//b1的值是3,b2的值是4,b没有值
byte b1 = 3,b2 = 4,b;

//b = b1 + b2; //这个是类型提升,所有有问题,其中b1,b2先变成了int类型,然后在赋值给了byte的b

b = 3 + 4; //常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。
}
}

<2>.强制转化的时候数据溢出怎么解决?

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

练习:byte b = (byte)300;
*/
class DataTypeDemo7 {
public static void main(String[] args) {
//因为byte的范围是:-128到127。
//而130不在此范围内,所以报错。
//byte b = 130;

//我们可以使用强制类型转换
byte b = (byte) 130;

//结果是多少呢?
System.out.println(b);
}
}
/*
分析过程:
我们要想知道结果是什么,就应该知道是如何进行计算的。
而我们又知道计算机中数据的运算都是补码进行的。
而要得到补码,首先要计算出数据的二进制。

A:获取130这个数据的二进制。
00000000 00000000 00000000 10000010
这是130的原码,也是反码,还是补码。
B:做截取操作,截成byte类型的了。
10000010
这个结果是补码。
C:已知补码求原码。
符号位 数值位
补码: 1 0000010

反码: 1 0000001

原码: 1 1111110
*/


9.字符串拼接符"+"的使用

(1).字符参与运算

/*
看程序写结果

通过字符和一个整数相加,我们给出一张表:ASCII码表。
通过看完这张表以后,我们要记住三个值:
'a' 97
'A' 65
'0' 48
*/
class DataTypeDemo8 {
public static void main(String[] args) {
//直接输出一个字符
System.out.println('a'); //a
//输出一个字符和一个整数做加法,这里面的+这一个是加法的意思
System.out.println('a'+1); //98
}
}


(2).字符串参与运算

/*
看程序写结果
字符串数据和其他数据做+,结果是字符串类型。
这里的+不是加法运算,而是字符串连接符。
*/
class DataTypeDemo9 {
public static void main(String[] args) {
System.out.println("hello"+'a'+1); //helloa1
System.out.println('a'+1+"hello"); //98hello

System.out.println("5+5="+5+5); //5+5=55
System.out.println(5+5+"=5+5"); //10=5+5
}
}

猜你喜欢

转载自www.cnblogs.com/nwxayyf/p/9458154.html