java基础之环境配置及语言规范

Java简介

什么是Java语言

Java是与1995年由Sun公司推出的面向对象的程序设计语言,Java之父詹姆斯·高斯林。

Java最初的名字是OAK,1995年被重命名为Java,正式发布。

Java是一种通过解释方式来执行的语言,Java是一种跨平台的程序设计语言。实现了“一次编写,到处运行”。

Java语言编写的程序即是解释型,又是编译型。代码经过编译后转换成字节码文件,Java虚拟机(JVM)将对字节码文件进行解释执行。编译只进行一次,而解释在每次运行程序时都会进行。

Java的应用领域

  • l  桌面应用程序
  • l  嵌入式系统
  • l  电子商务
  • l  企业应用
  • l  分布式
  • l  Web应用

Java开发环境搭建

安装JDK

在Oracle官网下载系统对应版本的JDK进行安装

配置环境变量

配置JAVA_HOME环境变量

 

配置Path环境变量

在命令行中执行javac进行测试

 

Java语言基础

Java主类结构

Java程序的基本组成单元是类,类中有包括属性和方法两部分。每一个应用程序都包含一个main()方法,含有main()方法的类称之为主类。

注意:Java是严格区分大小写的,并且所有的标点符号都是英文的。

基本数据类型

Java有8种基本数据类型

整数类型

整数类型用来存储整数数值,整数类型有3重表示形式,分别是十进制、八进制和十六进制。

十进制:由1、2、3、4、5、6、7、8、9组成,逢十进一。

八进制:以0开头,由1、2、3、4、5、6、7组成,逢八进一。

十六进制:以0x开头,由0~9和A、B、C、D、E、F组成,逢十六进一

进制之间的转换

十进制转换二进制

方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

 


二进制转十进制

方法为:把二进制数权展开,相加即得十进制数。

二进制转八进制

方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。

 

八进制转换二进制

方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。

 

二进制转十六进制

方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。

十六进制转二进制

方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。

 

十进制转八进制或者十六进制有两种方法

第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。

第二:直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。

 

八进制或者十六进制转成十进制

方法为:把八进制、十六进制数按权展开、相加即得十进制数。

 

原码、反码和补码

计算机内,有符号数由3种表示法:原码、反码和补码,所有数据的运算都是采用补码进行的。

正数的原码、反码和补码都相同。

负数的原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数字的大小。

反码:负数的反码就是对其原码取反,但符号位除外。

补码:负数的补码是在其反码的末位加1。

浮点类型

浮点类型表示有小数部分的数字。浮点类型分为单精度浮点类型(float)和双精度浮点类型(double),取值范围不同。

float              32位

double          64位

默认情况下,小数都被看作double型,若使用float型,须在小数后面添加F或f来声明。

注意:如果声明float型时不加后缀,默认是double型。

字符类型

1.     char型

字符型(char)用于存储单个字符占用16位(两个字节)的存储空间。

注意:char型用单引号声明,双引号声明的是字符串。

Java可以把字符作为整数对待。由于unicode编码采用无符号编码,可以存储65536个字符(0x0000~0xffff),所以Java 中的字符几乎可以处理所有国家的语言文字。若要得到0~65536之间的数代表的unicode表中相应位置上的字符,必须使用char型显示转换。

2.     转义字符

转义字符是一个特殊的字符变量,它以反斜杠“\“开头,后跟一个或多个字符。

将转义字符赋值给字符变量时,与字符常量一样需要使用单引号。

转义字符

含义

\ddd

1~3位八进制数据表示的字符,如\123

\uxxxx

4位十六进制数据所表示的字符,如\u0052

\’

单引号字符

\\

反斜杠字符

\t

垂直制表符,将光标移到下一个制表符的位置

\r

回车

\n

换行

\b

退格

\f

换页

布尔类型

布尔类型又称逻辑类型,通过boolean来定义布尔类型变量,只有ture和false两个值。布尔值不能与整数类型进行转换。通常被用在流程控制中作为判断条件。

变量与常量

在程序执行过程中,其值不能被改变的量称为常量,其值能被改变的量称为变量。

标识符和关键字

1.     标识符

标识符可以简单的理解为一个名字,用来标识类名、变量名、方法名、数组名文件名的有效字符序列。

标识符由字母、数字、下划线(_)、美元符($)组成,其中数字不能开头。标识符不能是Java关键字和保留字。标识符严格区分大小写。

2.     关键字

关键字是Java赋予特定含义的一些单词。

声明变量

声明变量时可以不赋值,也可以直接赋值。

声明常量

在程序运行时一直不会改变的量称为常量,也成为“final变量“,常量在整个程序中只能被赋值一次。

常量名通常使用大写字母,但这并不是必须的。(约定成俗)

当定义的常量属于“成员变量”时,必须在定义时就设定它的初的值。

变量的有效范围

变量的有效范围是指程序代码能够访问该变量的区域,若超出该区域,则在编译时会出现错误。

在程序中,一般根据变量的“有效范围”将变量分为“成员变量”和“局部变量”。

1、 成员变量

在类中定义的变量称为成员变量,成员变量的作用域是整个类。类的成员变量又分为两种,即静态变量和实例变量。

int x = 45;
static int y = 90;

在成员变量的前面加上static,这样的成员变量称为静态变量。静态变量的有效范围可以跨类,甚至可达到整个应用程序之内。除了可以直接在类内存取,还能直接以“类名.静态变量”的方式在其他类中使用。

2、 局部变量

在类的方法体中定义的变量(方法内部定义,“{”与“}”之间的代码中声明的变量),称为局部变量。

在类的方法中声明的变量,包括方法的参数,都属于局部变量。局部变量只在当前的方法中有效。局部变量的生命周期取决于方法,当方法被调用时,JVM为方法中的局部变量分配内存空间,当该方法的调用结束后,则会释放方法中局部变量占用的内存空间,局部变量也将被销毁。

局部变量可与成员变量的名字相同,此时成员变量将被隐藏,即这个成员变量在这个方法中暂时失效。

 
  
static int times = 3;

public static void main(String[] args){
    int times = 4;
    System.out.print("times的值为:"+times);
}

运算符

运算符是一些特殊的符号,主要用于数学函数、赋值和逻辑比较方面。Java中提供了丰富的运算符。

赋值运算符

赋值运算符以“=”表示,它是一个二级运算符(对两个操作数做处理)。

 
  
int a = 100;

       左边的操作数必须是一个变量,而右边操作数则可以是任何表达式。

 
  
int a = 10;
int b = 5;
int c = a + b;

遵循赋值运算符的运算规则,先计算后赋值。如果含有两个以上的“=”,后从最有方开始处理。

算术运算符

Java中的算数运算符主要有加(+)、减(-)、乘(*)、除(/)、取余(%),它们都是二元运算符。

注意:在进行运算时,0不能作为除数。

自增自减运算符

自增自减运算符是单目运算符,可以放在操作元之前,或之后。操作元必须是一个最终整型或浮点型变量。

++a;(--a)//表示在使用a之前,加一
a++;(a--)//表示在使用a之后,加一

比较运算符

比较运算符属于二元运算符,用于程序中的变量间或其他类型间的比较。比较运算符的结果都是boolean型。

运算符

作用

操作数据

比较左方是否大于右方

整型、浮点型 、字符型

比较左方是否小于右方

整型、浮点型 、字符型

==

比较左方是否等于右方

基本数据类型、引用数据类型

>=

比较左方是否大于等于右方

整型、浮点型 、字符型

<=

比较左方是否小于等于右方

整型、浮点型 、字符型

!=

比较左方是否不等于右方

基本数据类型、引用数据类型

逻辑运算符

返回类型为boolean值的表达式,如比较运算符。逻辑运算符的操作元必须是boolean型数据。

运算符

含义

&&、&

逻辑与

||

逻辑或

!

逻辑非

除了“!”是一元运算符之外,其他都是二元运算符。

“&&”与“&”都表示逻辑与,那么有什么区别?

      

       “&&”是逻辑与,又称为短路与,表示当左边的的表达式结果为true时,计算右边的表达式结果,当左边的表达式为false时,右边的表达式不进行计算。

       “&”是逻辑与,又称为非短路与,表示左边的表达式不管为true还是false右边的表达式都进行计算。

位运算符

在Java中存在着这样一类操作符,是针对二进制进行操作的。它们各自是&、|、^、~、>>、<<、>>>几个位操作符。不管是初始值是依照何种进制,都会换算成二进制进行位操作。位运算符除了“按位与”和“按位或”运算符外,其他只能用于处理整数。(位运算的实质都是先将十进制数转化为二进制在进行位运算)。

java中使用补码来表示二进制数,在补码表示中,最高位是符号位:0-正数,1-负数,补码规则为:正数最高位是0,其余的各位表示其数值本身;负数是该数值的绝对值的补码安慰取反+1所得。

eg:1

 对应二进制为:

0000 0000 0000 0000 0000 0000 0000 0001

按位取反为:

1111 1111 1111 1111 1111 1111 1111 1110

+1后为:

1111 1111 1111 1111 1111 1111 1111 1111

所以-1 的二进制为:1111 1111 1111 11111111 1111 1111

 1111

同理,5的二进制为:

0000 0000 0000 0000 0000 0000 0000 0101

按位取反为:

1111 1111

 1111 1111 11111111 1111 1010

+1后为:

1111 1111

 1111 1111 11111111 1111 1011

所以-5的二进制为:1111

 1111 1111 11111111 1111 1111 1011

在java中,int类型占32位,有正负之分,正数转化为二进制后,最高位是0.负数转化为二进制后最高位是1,所以,当右移时,高位的补位遵守“正数补0,负数补1”,而无符号右移的话,不论正负,均用0补齐。之所以没有无符号左移,是因为低位都用0补齐。

1. 左移(<<),eg:

 5<<2

首先将5转化为二进制:

0000

 0000 0000 00000000 0000 0000 0101

然后左移两位,低位用0补齐:

0000

 0000 0000 00000000 0000 0001 0100

转化为十进制数:20

 。 所以, 5<<2 = 20。

2. 右移(>>), eg: 5>>2(原理同左移一样,之一高位的符号位补齐方法)

首先将5转化为二进制:

0000 0000 0000 0000 0000 0000 0000 0101

然后右移两位,高位用0补齐:

0000 0000

 0000 0000 00000000 0000 0001

转化为十进制数:1 。 所以5>>2

 = 1。

3. 无符号右移(>>>),eg: 5>>3,-5>>3,-5>>>3

5的二进制:

0000

 0000 0000 00000000 0000 0000 0101

右移三位:

0000

 0000 0000 00000000 0000 0000 0000 (值位0)

-5的二进制:

1111

 1111 1111 11111111 1111 1111 1011

右移三位:

1111

 1111 1111 11111111 1111 1111 1111 (负数,高位用1补齐,值为-1)

无符号右移三位:

0001

 1111 1111 11111111 1111 1111 1111 (高位用1补齐,值为536870911)

4. 位与(&)、位或(|)、位异或(^)、位非(~):

都是先转化为二进制,然后二进制按位进行与、或、异或、非运算。

a. 位与:按位进行与运算(同1为1,否则为0),eg:5&3

5的二进制:

0000 0000 0000 0000 0000 0000 0000 0101

3的二进制:

00000000 0000

 0000 0000 00000000 0011

------------------------------------------------------

按位与运算:

0000 0000 0000 0000 0000 0000 0000 0001 (值为1)

所以,5&3

 = 1

b. 位或:按位进行或运算(同0为0,否则为1),eg: 5|3

5的二进制:

0000 0000 0000 0000 0000 0000 0000 0101

3的二进制:

00000000 0000 0000 0000 0000 0000 0011

------------------------------------------------------

按位或运算:

0000 0000 0000 0000 0000 0000 0000 0111 (值为7)

所以,5|3

 = 7

c.

 位异或:按位异或(同位相同为0,相反为1),eg:5^3

5的二进制:

0000 0000 0000 0000 0000 0000 0000 0101

3的二进制:

00000000

 0000 0000 00000000 0000 0011

------------------------------------------------------

按位异或运算:

0000 0000 0000 0000 0000 0000 0000 0110

 (值为6)

所以,5^3

 = 6

d.

 位非:按位进行非运算,即按位取反,一元操作符。

5的二进制:

0000 0000 0000 0000 0000 0000 0000 0101

位非:

1111 1111 1111 1111 1111 1111 1111 1010 (值为-6)

所以,~5 = -6。

3的二进制:

00000000 0000 0000 0000 0000 0000 0011

位非:

1111 1111 1111 1111 1111 1111 1111 1100 (值为-4)

所以,~3 = -4。

三元运算符

三元运算符又称三目运算符,一般用于逻辑判断。

三元运算符的格式为:

条件式?值1:值2

       三元运算符的规则为:若条件式的值为true,则取值1,否则取值2。

     
   boolean b = 20 < 45 ? true : false;

     运算符的优先级

Java中的表达式就是使用运算符连接起来的符合Java规则的式子。运算符的优先级决定了表达式中运算执行的先后顺序。

  • l  增量和减量运算
  • l  算术运算
  • l  比较运算
  • l  逻辑运算
  • l  赋值运算

优先级

描述

运算符

1

括号

()、[]

2

正负号

+、-

3

自增自减,非

++、--、!

4

乘除,取余

*、/、%

5

加减

+、-

6

移位运算

<<、>>、>>>

7

大小关系

>、>=、<、<=

8

相等关系

==、!=

9

按位与

&

10

按位异或

^

11

按位或

|

12

逻辑与

&&

13

逻辑或

||

14

条件运算

?:

15

赋值运算

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

16

位赋值运算

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

注意:在编写程序时尽量使用括号运算符来限定运算次序,以免产生错误的运算顺序。

      

数据类型转换

类型转换是将一个值从一个类型更改为另一个类型的过程。如果从低精度数据类型向高精度数据类型转换,则不会溢出;而把高精度数据类型向低精度类型转换则必然会丢失精度。

数据类型转换有两种方式,即隐式类型与显式类型。

隐式类型转换

从低级类型向高级类型的转换,系统将自动执行。这种类型的转换称为隐式类型转换。基本数据类型会涉及数据的转换,不包括逻辑类型和字符类型。按精度从低到高排序:byte<short<int<long<float<double。

显式类型转换

把高精度变量的值赋给低精度的变量时,必须使用显式类型转换(又称强制类型转换)。

语法:(类型名)要转换的值

注意:显式类型转换时可能会出现精度的丢失。


参考文献《Java从入门到精通》

参考文献:https://blog.csdn.net/set_one_name/article/details/76902050

猜你喜欢

转载自blog.csdn.net/qq_35046158/article/details/80258726