JAVA小记(学习第一周)

 

 学习路线watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

 环境变量

环境变量是指在操作系统指定的运行环境中的一组参数,它包含一个或多个应用程序使用的信息。环境变量一般是多值的,即一个环境变量可以有多个值,各个值之间以英文状态下的分号“;"( 即半角的分号)分隔开来。

对于Windows等操作系统来说,一般都有一个系统级的环境变量Path(路径)。当用户要求操作系统运行一个应用程序,却没有指定应用程序的完整路径时,操作系统首先会在当前路径下寻找该应用程序,如果找不到,便会到环境变量路径“Path”指定的路径下寻找。若找到该应用程序则执行它,否则会给出错误提示。用户可以通过设置环境变量来指定自己想要运行的程序的所在位置。

[编译Java程序需要用到javac命令,运行Java程序需要java 命令。而这两个命令并不是Windows系统自带的命令,所以用户需要通过设置环境变量( JDK的安装位置)来指定这两个命令的位置。设置完成后就可以在任意目录下使用这两个命令了,而无需每次都要输入这两个命令的所在的精确全路径(如C:Program FileslJavajdk1.8.0_ 05 )。javac 和java等命令都放在JDK安装目彖的bin下。]

环境变量的含义

(1)JAVA_HOME:顾名思义,该变量是指安装Java的JDK路径,它告知操作系统在哪里可以找到JDK。

 

(2)Path:该变量是告诉操作系统可执行文件的搜索路径,即可以在哪些路径下找到要执行的可执行文件,它仅对可执行文件有效。当运行一个可执行文件时,用户仅仅给出该文件名,操作系统首先会在当前目录下搜索该文件,若找到则运行它,若找不到该文件,则根据Path变量所设置的路径,逐条到Path目录中搜索该可执行文件。

 

(3)ClassPath:该变量是用来告诉Java解释器(即java命令)在哪些目录下可找到所需要执行的class文件(即javac编译生成的字节码文件)。

常量与变量

常量

常量标识符和前面讲到的变量标识符规定一样,可由任意顺序的大小写字母、数字、下划线(_ )和美元符号($)等组成,标识符不能以数字开头,也不能是Java中的保留关键字。

此外,在定义常量时,需要注意如下两点。

(1)必须要在常量声明时对其进行初始化,否则会出现编译错误。常量一旦初始化后,就无法再次对这个常量进行赋值。

(2)final关键字不仅可用来修饰基本数据类型的常量,也可以用来修饰对象引用或者方法。

变量

变量是利用声明的方式,将内存中的某个内存块保留下来以供程序使用,其内的值是可变的。可声明的变量数据类型有整型(int)、字符型(char)、浮点型( float或double),也可以是其他的数据类型(如用户自定义的数据类型一类)。 数据类型的“type” 和类的“class" 在地位上是对等的。

声明变量作用

(1)指定在内存中分配空间大小。

变量在声明时,可以同时给予初始化(即赋予初始值)。

(2)规定这个变量所能接受的运算。

例如,整数数据类型int只能接受加、减、乘、除(+,-.*./) 等运算符。

变量的作用范围

变量有作用范围,作用范围有时也称作用域。一旦超出变量的作用范围,就无法再使用这个变量。

按作用范围进行划分,变量分为成员变量和局部变量。

1.成员变量

在类体中定义的变量为成员变量。它的作用范围为整个类,也就是说在这个类中都可以访问到定义的成员变量。

2.局部变量

在一个函数(或称方法)或函数内代码块( code block )中定义的变量称为局部变量,局部变量在函数或代码块被执行时创建,在函数或代码块结束时被销毁。局部变量在进行取值操作前必须被初始化或赋值操作,否则会出现编译错误。

Java存在块级作用域,在程序中任意大括号包装的代码块中定义的变量,它的生命仅仅存在于程序运行该代码块时。比如在for (或while )循环体里、方法或方法的参数列表里等。在循环里声明的变量只要跳出循环,这个变量便不能再使用。同样,方法或方法的参数列表里定义的局部变量,当跳出方法体(method body)之外,该变量也不能使用了。

注意:

Java中作用范围是禁止嵌套的,而在C/C++中则是允许的。

在Java中,在方法(函数)内定义的变量,其作用范围(包括方法的参数)是从它定义的地方开始,到它所作用范围终结的位置处结束。如在方法的开始处定义了一个变量i,那么直到该方法结束处,都不能再定义另一个同名变量i。再如,如果在一个for循环体中定义了变量i,那么在这个for循环内不能再有同名变量,但出了for 循环之后,是可以再次定义的。

而在C/C++中,作用域可以嵌套,甚至无限制地嵌套下去,这里每对大括号之间就是一个独立的作用域,内嵌套的同名变量覆盖外迁套的同名变量。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

 数据类型

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16 

 整数类型

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16 

byte类型

short类型

int类型

long类型

浮点类型

float类型

double类型

double 类型

一种双精度( double )浮点数可供使用。双精度浮点数类型的长度为64个字节,有效范围为-1.7x 10308~1.7x 10308。

Java提供了浮点数类型的最大值与最小值的代码,其所使用的类全名与所代表的值的范围:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

 字符类型(char)

转义字符

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

 布尔类型

数据类型转换

自动类型转换

下面2个条件皆成立时,自动进行数据类型的转换。

(1)转换前后的数据类型要相互兼容。在C/C++中,整型和布尔类型的关系是“非零即为真”凡是不是零的整数都可以认为是布尔值为真变量,二者是兼容的,所以可以相互转换。而在Java中,由于boolean类型只能存放true或flase,与整数及字符不兼容,因此boolean类型不可能与其他任何数据类型进行转换。整数.与浮点数亦是兼容的,所以可相互转换。

(2)转换后的数据类型的表示范围不小于转换前的类型。Java在进行数值运算时,以尽量不损失精度( 正确性)为准则。

强制类型转换

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

 运算符,表达式,语句

运算符

赋值运算符

一元运算符

很多表达式的运算符前后都会有操作数。但有一类操作符只需要一个操作数。这类运算符称为一元运算符(或单目运算符)。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

 算术远算符

算术运算符用于量之间的运算。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16 逻辑运算符watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

 位运算符

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

三元运算符

关系运算符

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

递增与递减运算符

括号运算符

运算符的优先级watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

 表达式

(一些简洁写法)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

算数表达式

关系表达式

逻辑表达式

赋值表达式

表达式的类型转换

程序的表达式中有类型不相符的情况时,就会依据下列规则来处理类型的转换。

(1)占用字节较少的数据类型转换成占用字节较多的数据类型。

(2)字符类型会转换成int类型。

(3)int类型会转换成float类型。

(4)表达式中若某个操作数的类型为double,则另一个操作数也会转换成double类型。

(5)布尔类型不能转换成其他类型。

语句

空语句

声明语句

赋值语句

注意:

1. &和&&、|和||的关系是怎么样? 

对于“与操作”:有一个条件不满足,结果就是false。 普通与(& ):所有的判断条件都要执行;短路与( &&):如果前面有条件已经返回了false,不再向后判断,那么最终结果就是false。对于“或操作”:有一个条件满足,结果就是true。对于普通或(|):所有的判断条件都要执行;短路或(|):如果前面有条件返回了true,不再向后判断,那么最终结果就是true。

2.递增与递减运算符

递增与递减运算符通常单独使用,不与其他操作符一起组 成语句。

3.位运算的技巧

任何数与0000001 (二进制)进行或(|)运算后,第一位将变为1,与1111 1110(二进制)进行与(&)运算后,第一位将变为0。

位运算通常用于设置或获取标志位,及判断相应的操作是否成功。

程序控制结构

选择结构

if语句

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_7,color_FFFFFF,t_70,g_se,x_16

if-else语句

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_5,color_FFFFFF,t_70,g_se,x_16 

 if-else  if-else 语句

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_9,color_FFFFFF,t_70,g_se,x_16

 switch语句

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_12,color_FFFFFF,t_70,g_se,x_16

 循环结构

while循环

do-while循环

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_7,color_FFFFFF,t_70,g_se,x_16

 for循环

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_15,color_FFFFFF,t_70,g_se,x_16

 foreach循环

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_13,color_FFFFFF,t_70,g_se,x_16

 循环嵌套

循环的跳转

break语句

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

 break语句不仅可以用在switch语句中,在while、for、 do-while 等循环语句结构中的循环体或语句组中也可以使用break语句,其作用是使程序立即退出该结构,转而执行该结构下面的第1条语句。break 语句也称之为中断语句,它通常用来在适当的时候退出某个循环,或终止某个case并跳出switch结构。在循环主体中有break语句时,当程序执行到break,即会离开循环主体,而继续执行循环外层的语句。

continue语句

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YW75Y-q5bCP546L5Y-t,size_20,color_FFFFFF,t_70,g_se,x_16

 类似于break语句有两种用法,continue语句也有两种用法:一种是最常见的就是不带标签的continue语句。另外一种情况就是带标签的continue语句,它可以协助跳出循环体,接着运行指定位置语句。

不带标签的continue语句,break 语句是跳出当前层循环,终结的是整个循环,也不再判断循环条件是否成立;相比而言,continue 语句则是结束本次循环(即continue语句之后的语句不再执行),然后重新回到循环的起点,判断循环条件是否成立,如果成立,则再次进入循环体,若不成立,跳出循环。

return语句

 

注意:

1.三元运算符与if-else语句的关系

三元运算符就相当于if-else语句,只不过三元运算符有返回值。但只有在if-else语句的主体部分很少时才使用三元运算符。

2.并不是每个case后都需要break语句

在某些情况下,在switch结构体中,可以有意的减少一些的特定位置的break语句,这样可以简化程序。

3.三种循环的关系

三种循环结构其实是可以互相转化的,通常我们只是使用其中一种结构,因为这样可以使程序结构更加清晰。

4.循环的区间控制

在习惯上,我们在循环中通常使用半开区,即从第一个元素开始,到最后一个元素的下一 个位置之前。同样是循环十次,推荐使用

for(int i=0;i< 10; ++i)

而非

for( int i=0;i<=9; ++i)

来循环十次。前者更具有可读性,而后者也能达到相同功能。

数组

一维数组

要使用Java的数组,必须经过以下两个步骤。

(1)声明数组。

(2)分配内存给该数组。

在数组的声明格式里,“数据类型”是声明数组元素的数据类型,常见的类型有整型、浮点型与字符型等。“数组名”是用来统一这组相同数据类型的元素的名称,命名规则和变量相同。数组声明后,接下来便要配置数组所需的内存,其中“个数”是告诉编译器,所声明的数组要存放多少个元素,而关键字“new”则是命令编译器根据括号里的个数,在内存中分配一块内存供该数组使用。例如,型的数据。例如int是一个基本类型,但int[]( 把“int[]” 当成一个整体)就是一种引用数据类型。

int[]就是一种数据类型,与int、float等基本数据类型类似,同样可以使用该类型来定义变量,也可以使用该类型进行类型转换等。在使用int]类型来定义变量、进行类型转换时,与使用其他基本数据类型的使用方式没有任何区别。

二维数组

二维数组的声明与分配内存

二维数组声明的方式和一维数组类似,内存的分配也一样是用new这个关键字。其声明与分配内存的格式如下。

数据类型[][]数组名;

数组名= new数据类型[行的个数][列的个数] ;

用较为简洁的方式来声明数组,其格式如下。

数据类型[][]数组名=new数据类型[行的个数][列的个数];

如果想直接在声明时就对数组赋初值,可以利用大括号完成。只要在数组的声明格式后面再加上所赋的初值即可。

多维数组

要想提高数组的维数,只要在声明数组的时候将索引与中括号再加一组即可,所以三维数组的声明为int[][] [],而四维数组为int[][][][] .....依此类推。

注意:

1. Java中的null的使用

Java中变量通常遵循一个原则:先定义,并初始化后,然后再使用。有时候,我们定义一个类型变量,在刚开始的时候,无法给出一个明确的值,就可以用一个null来代替。

但是有一点需要注意的是,不可以将null赋给基本类型变量(如int、float、 double 等)。

2.数组的下标

在使用数组时,需要注意的是,人们的直观感觉计数一般是从1开始的,而Java中数组的下标是从0开始计数的。

此外,数组的下标不能超过( length-1 ),否则会产生越界错误,例如,我们定义个一个包含10个元素的数组score。

int[] score = new int[10];

那么score[9]是我们能使用的最大下标数组元素,而score[10]则产生了越界。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值