JAVA基础语法(复习【1202】)

一、简介
   1.1,java的语言历史:
Java是sun公司在1990年开发的,最初名为Oak
92年,Oak语言后改名Java
95年,sun world会议上对外发布Java语言
96年,发布1.0版本
98年,发布1.2版本,J2SE、J2ME、J2EE
04年,发布5.0版本,JavaSE、JavaME、JavaEE
06年,发布6.0版本

   java之父:詹姆斯.高斯林
高斯林曾先后加入了sun、oracle、google等公司。
   1.2,java的语言特点:
简单性
开放性
跨平台

二、java开发环境的搭建
   2.1,下载JDK:
下载JDK(Java Development Kit),下载地址如下:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
   2.2,安装JDK:
选择默认安装即可;
默认安装路径:
32位系统:C:\Program Files (x86)\Java
64位系统:C:\Program Files\Java
安装成功之后,在Java文件夹下存在两个文件夹,分别为jdk和jre
   2.3,环境变量配置:
~~

右键计算机选择属性
选择高级系统设置
点击环境变量
在系统变量中做出如下修改
(试一下效果……)
~~

1、添加JAVA_HOME变量,变量值为

C:\Program Files\Java\jdk1.8.0_131

2、添加classpath变量,变量值为

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

3、在path变量的结尾处添加如下内容

;%JAVA_HOME%\jre\bin

   2.4,测试是否配置成功:
在运行中输入cmd,打开dos窗口
在窗口中输入: java -version
如果显示出java版本号之后输入: javac

配置成功界面!

三、HelloWorld
1、新建文本文件,将文件命名
为 HelloWorld.java (严格区分大小写)

2、编写java代码

3、将代码编译为字节码文件
a)打开dos窗口,切换到java文件所在目录
b)输入:javac HelloWorld.java

4、运行字节码文件
执行完步骤三之后,在dos窗口中输入
java HelloWorld

由上述步骤我们可以看到,一个java程序的运行要通过:源代码的编写、代码编译、代码运行。

四、IDE(Eclipse)的使用
   4.1,ide,又称“集成开发工具”,市场上常用的javaIDE有:eclipse(myEclipse)和idera两种
myEclipse为收费版,切集成插件比较成熟,但是启动速度较慢;

   4.2,eclipse由IBM公司研发,后期进行了开源。
eclipse最近的版本为Neon(霓虹),之前包括luna(月神)、mars(火星)、kepler(开普勒)等。

   4.3,使用eclipse创建一个java项目:
右键空白处,选择new、others、new java project
然后为新建的项目起名字,最后finish即可。

   4.4,eclipse常用快捷键:
ctrl + d 删除当前行
ctrl + f 查找指定字符
ctrl + shift + f 格式化代码
alt + / 代码提示
ctrl + o 显示当前类的所有的方法
ctrl + h 全局搜索
ctrl + k 定位指定关键字
ctrl + shift + r 定位指定文件并打开

五、注释
单行注释:
//注释内容

多行注释:
/*
注释内容
*/

文本注释:
/**
注释内容
*/

六、变量
   什么是变量?
      我们将一个数据存放到电脑的内存当中,那么我们
如何去访问我们存储的数据呢?我们需要一种机制
来访问我们存储的数据,这种机制就是变量;每一
个变量都代表了一小块内存,而变量是有名字
的,程序对变量赋值,其实就是把数据装入该变量
所代表的内存区的过程,同样道理,程序读取变量
的值,实际上就是从该变量所代表的内存区取值的
过程。形象的理解:变量相当于有名字的容器,该
容器用于装载不同类型的数据。
以上出自:疯狂java讲义

变量的声明:
单个变量的声明:
int a = 12 ;
多个相同类型的变量同时声明:
int a = 12 , b = 13 , c = 14 ;

变量的使用:
通过变量的名称访问变量代表的值;

变量的命名规则:
1、由字母、数字、下划线、美元符号等组成,且首字母不能为数字
2、不能是java的关键字和保留字
3、没有长度限制
4、大小写敏感
5、驼峰命名法

七、数据类型
   7.1,整数类型:
有四中类型都用来表示整数,分别是byte、short、int、long,他们的区别在于他们所占用的内存空间和表示范围;

		 类型名称        所占空间		     表示范围									包装类
		  byte		 	1个字节			-128 - 127							    	 Byte
		  short			2个字节			-32768 - 32767								 Short
		  int			4个字节			-2147483648~2147483647 						 Integer
		  long			8个字节          -9223372036854775808 ~ 9223372036854775807  	 Long

可以把这四种基本类型想象成四个大小不同的饭盒,虽然空间不同,但是所装的数据基本上是一类的。要注意的是,表示范围小的类型可以直接赋值给表示范围大的类型,而反之不行;例如:
int a = 10;
byte b = 10;
//可以,表示范围小的类型赋值给范围更大的类型
a = b;
//编译错误!表示范围大的类型不能赋值给范围小
的类型!
b = a;

也不能给一个变量赋一个超过其表示范围的值。例如:
byte b1 = 100; //可以赋值
byte b2 = 150; //编译错误! 150 超过了 byte 类型
的表示范围!

注意:
如果声明一个long类型的变量,形式如下:
long vs = 1000L;

   7.2,浮点数类型:
在计算机术语中,小数被称为浮点数。在 Java 语言中,浮点数有两种,分别为 float 和double。

		类型名称			所占空间			    表示范围				包装类
		float			4个字节			-3.4E38~3.4E38			Float		
		double			8个字节    		-1.7E308~1.7E308		Double

浮点数值默认为double类型,如果声明一个float类型的变量,形式如下:
float a = 3.14F ;

计算机表示小数,自然就涉及到表示精度的问题。由于计算机内部使用二进制表示小数,与我们通常的十进制表示法不同,因此小数在表示过程中有可能会有精度方面的损失。例如下面的程序:
public class TestFloat {
public static void main(String[] args) {
double a = 2.0 - 1.1;
System.out.println(a);
}
}
这段代码会输出:
0.8999999999999999

在上面的程序中, 显示的结果并不是我们期望的“0.9“, 这就是因为计算机内部用二进制表示这个数的时候, 产生了精度上的问题。 这就类似于,用十进制表示数,很难精确的表示 1/3 一样。

   7.3,字符类型:
Java 中的字符类型为 char 类型,其本质为一个无符号整数。相关参数如下

类型名称 		所占空间 		表示范围				包装类
 char 			2 个字节 		0 ~ 65535			Charater

在计算机中,一个字符是由一个正整数表示,这个整数被称为字符的编码。 Java 中的char 类型存放的就是字符的编码。例如,大写字母‘A’的编码为 65,用 16 进制表示为 0x41给一个字符变量赋值总共有三种方式:字面值赋值,编码赋值, unicode 赋值。三种赋值方式的语法如下:
char ch1 = ‘A’; //字面值赋值
char ch2 = 65; //编码赋值
char ch3 = ‘\u0041’; //unicode 赋值

赋值:
直接给出用单引号包围的单个字符。注意, Java
中单引号和双引号有不同的含义,单引号用来包围
字符,双引号用来包围字符串

编码赋值:
直接给出字符的编码值,例如给出大写字
母‘A’的编码 65。

Unicode 赋值: Unicode 是一种国际字符编码规
范,能够处理全世界各国的语言。如果要使用这种
赋值方式,则需要在一对单引号之下给出\u 和 4
位 16 进制的 unicode 编码。在这个例子中,十
六进制数 0041 表示成十进制为数字 65,因此
ch3 表示的也是大写字母‘A’。

由于 Java 中的 char 类型采用 Unicode 编码方式,前面介绍过, Unicode 能够处理世界各
国的语言字符,因此, char 类型可以用来处理中文。例如:
char ch1 = ‘中’;
另外,有一些字符在 java 中有特殊含义,在使用时要通过反斜杠“\”来转义。例如,想表示一个单引号字符(’),则必须使用(’) 的语法。除了单引号(’)之外,双引号(")、反斜杠(\)、换行符(\n),制表符(\t)都是一些常用的转义字符。

   7.4,布尔类型:
布尔类型用来进行逻辑运算。 Java 中的布尔类型为 boolean 类型,这种类型只有两种字面值: true 或者 false。要注意的是布尔类型无法跟其他类型进行运算,也无法自动转化为其他类型。例如:
// 正确
boolean flag = true;
//错误! 1 不能转换为 boolean 类型!
boolean flag = 1;

   7.5,强制类型转换:
我们在上一节中介绍,表示范围大的类型,不能给表示范围小的类型赋值。例如,下面的代码就会产生一个编译错误:
int a = 10;
byte b;
//!编译错误, int 类型不能直接给 byte 类型赋值
b = a;

   编译出错的原因,在于 int 类型中能够保存的数值,有可能远大于 byte 类型的表示范围。就好像如果要把一个大汤盆中的东西倒到一个小碗中,很有可能会出问题。这时候,编译器就会阻拦我们的这个操作。但是,有些情况下,大汤盆中的东西只剩一点儿了,这个时候完全可以把大汤盆中的东西倒到小碗中。对于上面的代码来说,虽然 int 的表示范围远大于 byte 类型,但是我们可以确认, int 变量 a 中的数据,完全可以让一个 byte 变量来保存。这种情况,我们不希望编译器阻拦我们。因此,可以使用强制类型转换。

   强制类型转换的语法如下:
(类型) 变量
   这个语法表示,把变量的值强制转换为某个特定的类型。例如上面的代码,我们要把 a的值强制转换为 byte 类型,再给 b 赋值,则可以把代码写成:
b = (byte) a;

   如果 a 中数值的范围超过了 b 所表示的范围,使用强制类型转换也能正常编译,但是转换的结果会有问题。例如
int a = 150;
//编译通过,但是 b 的值为一个错误值
byte b = (byte) a;
System.out.println(b); //输出为-106

超出范围之后之所以会将其转换成负数这涉及到在计算机中如何用二进制表示正数,以及补码转码等问题。

   7.6,自动类型提升:
在正式介绍 Java 中的各种基本运算符之前,先给大家介绍 Java 中很特别的一个语法性质:自动类型提升。请看下面的一段代码:
byte a = 10, b = 20;
byte c = a+b;

于大部分语言而言,这都应该是一段合法的代码,而对于 Java 语言来说,这段代码会出一个编译时错误;

   产生错误的原因是:
java在进行运算的时候是先将a+b的值存在一个临时的变量里面,而这个临时变量的类型是int 类型的,此时将int类型赋值给一个byte类型,需要强制类型转换,源代码可修改如下:
byte c = (byte)(a+b);

Java 自动类型提升的规则如下:
1. 如果运算数中存在 double,则自动类型提升为 double
2. 如果运算数中没有 double 但存在 float,则自 动类型提升为 float
3. 如果运算数中没有浮点类型,但存在 long,则 自动类型提升为 long
4. 其他所有情况,自动类型提升为 int。

八、运算符
   8.1,表达式:
所谓的表达式,指的是用运算符连接变量或字面值所形成的式子,例如: a+b, 2+c 等。
需要强调的一点是,任何一个表达式都会有一个值。也可以理解为,所有表达式都会返回一个结果,例如 1+2 会返回 3 作为表达式的结果。
表达式的值也有不同类型。例如,布尔表达式,就说明这个表达式的值的类型为 boolean类型。因此,在写程序的过程中,一定要明确表达式的值,以及这个值的类型。

   8.2,赋值运算符:
赋值号(=)
赋值操作是编程中最常用的操作之一。 Java 中的赋值号为一个等号(=)。赋值号具有右结合性,也就是说,会先计算赋值号右边的内容,然后把计算结果赋值给左边的变量。
   8.3,基本数学运算符:
基本数学运算包括加(+)减(-)乘()除(/)以及取余(%)操作。这些操作和数学上的定义没有区别;
需要注意的是,类似于 3/2 这样的表达式。由于 3 和 2 都是整数类型,因此根据自动类型提升的规则,结果也一定是整数类型。
因此, 3/2 这个表达式的值是 1,如果希望得到数学上精确的结果 1.5, 则需要使用 3.0/2 这样的表达式,来保证结果数据是 double 类型的。
此外, Java 中的数学运算符符合先乘除,后加减的规则。 例如: 2+3*4 这个表达式的值为 14。

   8.4,简写数学运算符:
+=, -=, *=, /=
在实际编程中,经常会写出类似于 a = a + 2 之类的表达式,表示把 a 在原有值的基础上增加 2。这种写法有一种更方便的简写形式: a += 2。
-=, *=, /=等运算符与+=类似。

   8.5,自增与自减:
++与- -

对于 a+=1 这样的表达式而言,还有一种更加简单的运算符: ++,与之类似的, a-=1 可以用 a- -来代替。要注意的是,使用++(或–) 运算符有两种方式:前缀式或后缀式。例如:
a++; //后缀式
++a; //前缀式

要注意的是这两种方式的区别和联系。首先,对于 a++和++a 这两种方式而言,对 a 的操作是完全一样的,都会在表达式运算结束之后把 a 的值加 1。这两种方式所不同的地方在于表达式的值不同,例如,假设 a = 5,则不管执行 a++还是++a,执行之后 a 的值均为 6。所不同的是, a++
这个表达式的值为 5(即 a 加 1 之前的值),而++a 这个表达式的值为 6(即 a 加 1 之后的值)。
a–和--a 有类似的关系。

   8.6,布尔运算符:
我们首先把所有布尔运算符分为两大类。
第一类运算符为: >(大于) , >=(大于等于) , <(小于) , <=(小于等于) , = =(相等) , !=(不相等),这些运算符都接受两个参数,返回一个布尔值,表示判断结果。需要注意的是判断相等(= =)是两个等号,一定要把这个布尔运算和赋值号(=)区分开来。

第二类运算符:与(&&)、或(||)、非(!),这些运算符只能接受两个布尔类型的运算数。非运算符表示取反,即!true 结果为 false,而!false 结果为 true。

   8.7,三元运算符:
本图片摘自百度百科
(来源自:百度百科)
Java 中只有唯一的一个三元运算符,其基本语法如下:
布尔表达式 ? 表达式 1 : 表达式 2
如果布尔表达式的值为 true,则整个三元表达式的值为表达式 1 的值;如果布尔表达式的值为 false,则整个三元表达式的值为表达式 2 的值。

   8.8,运算优先级:
在 Java 中进行计算时,会先进行优先级高的运算,再进行优先级低的运算。但是,圆括号“()”的优先级是最高的,如果有圆括号的话,就先计算圆括号中的值。在写代码的时候,一般不用刻意去记忆操作符的优先级。如果不能确定运算符的优先级,可以使用圆括号()来指定运算的顺序。

九、String类型初解
String 类型不是八种基本类型的一种,从分类上说, String 类型是一种对象类型。但是String 类型和普通的对象类型又不尽相同,作为一个比较基本的数据类型,它有一些区别于其他对象类型的特点。
String 类是 Java 语言中比较重要的一个类型,随着学习的深入,我们会对 String 类型的了解越来越深入。在本章中,我们主要介绍 String 类型的三个特点。

一、 String 类型有字面值。
关于这一点,我们之前已经有过接触: String 类型的字面值为双引号("")中包含的内容。例如:
String str = “Hello World”;
要注意的是单引号和双引号的区别。单引号用在字符类型上,而双引号用在字符串上。
例如:
char ch1 = ‘A’; //单引号用在字符类型字面值上
char ch2 = ‘AB’; //错误! char 类型不能表示多
个字符
char ch3 = “A”; //错误!
String str1 = “A”; //表示只有一个字符的字符串
String str2 = “ABC”; //表示有多个字符的字符串
String str3 = ‘A’; //错误!

二、 String 类型支持加法运算。
字符串类型是对象类型中唯一支持加法运算的类型。字符串加法表示字符串的连接。例如:
String str1 = “Hello World”;
String str2 = " Welcome";
// 字符串加法,输出结果为: Hello World Welcome
System.out.println(str1 + str2);
需要注意的是字符串加法和字符加法之间的区别。字符串加法表示连接,而字符的加法表示字符编码数值的相加,两者有本质的不同。例如:
//字符串加法,输出 ab
System.out.println(“a” + “b”);
//字符加法,将 a 和 b 的编码相加,输出一
个整数,由于’a’的编码为 97, ’b’的编码
为 98,因此将输出 195。
System.out.println(‘a’ + ‘b’);

三、 任何类型与 String 类型相加,结果都为 String 类型。
这个特性可以当做是 String 类型的“自动类型提升”。例如:
int i = 10;
System.out.println(“1234” + i);
输出 123410 , 整数 i 会被自动“提升”为字符串“10”,其结果就是“1234” 和“10”这两个字符串的连接结果。

十、局部变量
局部变量是 Java 中很重要的一个概念,我们首先来看局部变量的定义。
局部变量是指:
在方法内部定义的变量。在目前,我们能接触到的
所有变量都被定义在主方法内部,因此目前我们接
触到的变量都是局部变量。

关于局部变量, Java 有三条规则:
1、 先赋值,后使用。
2、 局部变量有作用范围,其作用范围从定义的 位置开始,到包含它的代码块结束
3、 重合范围内,两个局部变量不能有命名冲 突。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值