一、java简介:
Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。
Java体系:1.javaEE(Java 2 Platform,Enterprise Edition)企业版
2.javaSE(Java2 Platform Standard Edition)标准版
3.javaME(Java 2 Platform Micro Edition)微型版
<1> java术语:
JVM:java虚拟机
JRE:java运行环境,JRE包括JVM
JDK:java语言开发工具包,包括JRE
<2>JDK下载与安装
1、下载java开发工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
2、根据提示安装JDK(傻瓜式安装)
3、配置环境变量:
*安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置";
*选择"高级"选项卡,点击"环境变量";
*在系统变量中点击新建,添加
变量名:JAVA_HOME
变量值:D:\tools\jdk1.8.0_71 // 要根据自己安装jdk的实际路径配置
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //记得前面有个".;"
*在系统变量中找到path变量,点击编辑,添加 %JAVA_HOME%\bin
4、测试JDK是否安装成功
* 打开DOS命令窗口:输入java若无错误,继续输入javac、java -version可以查看相应JDK版本的基本信息 * 在D盘新建一个文件夹,文件夹里再新建一个以.java为后缀的文件。内容为:
class Demo{}
*DOS命令中输入:javac Demo.java生成.class文件, (查看文件夹会出现一个.class的文件生成)再输入运行命令 Java Demo(Demo指:Demo.class文件)运行结果报错:找不到或是无法加载Demo主类;返回.java文件加上主 类:
class Demo{
public static void main(String[] args){
} ;
}
这是在输入命令:java Demo 运行结果没报错也没有内容,那是因为没有输出函数,需要再加上:System.out.println("hello world!"); 再次输入命令java Demo,就有内容hello world!出现了即安装成功。若失败,需要重配置坏境变量。.java代码如下:
class Demo{
public static void main(String[] args){
System.out.println("hello world!");
}
}
二、java标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
* 关于Java标识符,有以下几点需要注意:
* 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始 首字符之后可以是任何字符的组合 关键字不能用作标识符
* 标识符是大小写敏感的 合法标识符举例:age、$salary、_value、__1_value 非法标识符举例:123abc、-salary
package javabiji;
/**
* 标识符
* @author Administrator
*
*/
public class JavaIdentifier {
public static void main(String[] args) {
int a=123;
// int 12abc=2;//标识符不能以数字开头
// int class=1;//标识符不能以关键字开头
int $abc=2;
// int 代码=1;//标识符可以用中文,但不建议用
int _ac=2;
char Ab123=8;
//变量名声明:数据类型 数据名 = 初值
int b,c, d=5;
int m=2,n=3;
int p=6;
System.out.print(a);
System.out.print(_ac);
System.out.print(代码);
}
}
三、java关键字
关键字 | 描述 |
abstract | 抽象方法,抽象类的修饰符 |
assert | 断言条件是否满足 |
boolean | 布尔数据类型 |
break | 跳出循环或者label代码段 |
byte | 8-bit 有符号数据类型 |
case | switch语句的一个条件 |
catch | 和try搭配捕捉异常信息 |
char | 16-bit Unicode字符数据类型 |
class | 定义类 |
const | 未使用 |
continue | 不执行循环体剩余部分 |
default | switch语句中的默认分支 |
do | 循环语句,循环体至少会执行一次 |
double | 64-bit双精度浮点数 |
else | if条件不成立时执行的分支 |
enum | 枚举类型 |
extends | 表示一个类是另一个类的子类 |
final | 表示一个值在初始化之后就不能再改变了 表示方法不能被重写,或者一个类不能有子类 |
finally | 为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。 |
float | 32-bit单精度浮点数 |
for | for循环语句 |
goto | 未使用 |
if | 条件语句 |
implements | 表示一个类实现了接口 |
import | 导入类 |
instanceof | 测试一个对象是否是某个类的实例 |
int | 32位整型数 |
interface | 接口,一种抽象的类型,仅有方法和常量的定义 |
long | 64位整型数 |
native | 表示方法用非java代码实现 |
new | 分配新的类实例 |
package | 一系列相关类组成一个包 |
private | 表示私有字段,或者方法等,只能从类内部访问 |
protected | 表示字段只能通过类或者其子类访问 子类或者在同一个包内的其他类 |
public | 表示共有属性或者方法 |
return | 方法返回值 |
short | 16位数字 |
static | 表示在类级别定义,所有实例共享的 |
strictfp | 浮点数比较使用严格的规则 |
super | 表示基类 |
switch | 选择语句 |
synchronized | 表示同一时间只能由一个线程访问的代码块 |
this | 表示调用当前实例 或者调用另一个构造函数 |
throw | 抛出异常 |
throws | 定义方法可能抛出的异常 |
transient | 修饰不要序列化的字段 |
try | 表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码 |
void | 标记方法不返回任何值 |
volatile | 标记字段可能会被多个线程同时访问,而不做同步 |
while | while循环 |
四、java的数据类型
char
* char类型是一个单一的16位字符;
* 最小值是’\u0000’(即为0);
* 最大值是’\uffff’(即为65,535);
* char数据类型可以储存任何字符;
int
*int数据类型是32位、有符号的以二进制补码表示的整数;
*最小值是-2,147,483,648(-2^31);
*最大值是2,147,483,647(2^31 - 1);
*一般地整型变量默认为int类型;
*默认值是0;
float
* float数据类型是单精度、32位浮点数;
* float在储存大型浮点数组的时候可节省内存空间;
* 默认值是0.0f;
* 浮点数不能用来表示精确的值,如货币;
double
* double数据类型是双精度、64位浮点数;
* 浮点数的默认类型为double类型;
* double类型同样不能表示精确的值,如货币;
* 默认值是0.0d
package javabiji;
import java.math.BigDecimal;
/**
* 浮点数据类型
* @author Administrator
*
*/
public class javaFloatDouble {
public static void main(String[] args) {
//双精度浮点型 e2表示十的二次方 e-2表示十的负二次方, 大小写一样。
double a=314e2;
double b=314E2;
double c=314e-2;
double f=3456d;
//单精度浮点型
float d=65536l;//在后面加L表示为数据类型是float类型
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(f);
System.out.println("-------------------------");
//比较
double g = 0.1;
float h = 1.0f/10.0f;
System.out.println("g==h:"+(g==h));//运行结果为false
System.out.println("-------------------------");
//使用精确浮点运行,推荐BigDecimal
BigDecimal bd =BigDecimal.valueOf(1.0);
bd=bd.subtract(BigDecimal.valueOf(0.1));
bd=bd.subtract(BigDecimal.valueOf(0.1));
bd=bd.subtract(BigDecimal.valueOf(0.1));
bd=bd.subtract(BigDecimal.valueOf(0.1));
System.out.println(bd);
System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1);
System.out.println("-------------------------");
BigDecimal bd2 =BigDecimal.valueOf(0.1);
BigDecimal bd3 =BigDecimal.valueOf(1.0/10);
System.out.println(bd2.equals (bd3));
}
}
long:
*long数据类型是64位、有符号的以二进制补码表示的整数;
*最小值是-9,223,372,036,854,775,808(-2^63);
*最大值是9,223,372,036,854,775,807(2^63 -1);
*这种类型主要使用在需要比较大整数的系统上;
*默认值是0L;
short:
*short数据类型是16位、有符号的以二进制补码表示的整数
*最小值是-32768(-2^15);
*最大值是32767(2^15 - 1);
*Short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一;
*默认值是0;
byte:
*byte数据类型是8位、有符号的,以二进制补码表示的整数;
*最小值是-128(-2^7);
*最大值是127(2^7-1);
*默认值是0;
*byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一;
boolean:
*boolean数据类型表示一位的信息;
*只有两个取值:true和false;
*这种类型只作为一种标志来记录true/false情况;
*默认值是false;
package javabiji;
/**
* 布尔类型
* @author Administrator
*
*/
public class javaBoolean {
public static void main(String[] args) {
boolean fig;
fig=true;
if(fig) {
System.out.println("条件为真!");//ture
}
else{
System.out.println("条件为假!");//false
}
}
}
五、java数据类型
1、局部变量:局部变量声明在方法、构造方法或者语句块中;
* 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
* 访问修饰符不能用于局部变量; 局部变量只在声明它的方法、构造方法或者语句块中可见; 局部变量是在栈上分配的。
* 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
2、成员变量:
* 成员变量声明在一个类中,但在方法、构造方法和语句块之外; 当一个对象被实例化之后,每个成员变量的值就跟着确定;
* 成员变量在对象创建的时候创建,在对象被销毁的时候销毁; 成员变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取成员变量信息;
* 成员变量可以声明在使用前或者使用后; 访问修饰符可以修饰成员变量;
* 成员变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把成员变量设为私有。通过使用访问修饰符可以使成员变量对子类可见;
* 成员变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,
* 也可以在构造方法中指定;
* 成员变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名
六、java进制
*二进制以0b开头,由0~1数字组成
*八进制以0开头,0~7数字组成
*十进制以0开头,0~9数字组成
*八进制以0开头,0~9数字、 a~f字母组成
package javabiji;
public class javaSystem {
public static void main(String[] args) {
short salary=180;
byte age=18;
int a=40000;
long b=45000000L; //在后面加L表示为数据类型是long
int c=0b0101; //二进制以0b开头,由0~1数字组成
int d=01234; //八进制以0开头,0~7数字组成
int e=23; //十进制以0开头,0~9数字组成
int f=0xba02; //八进制以0开头,0~9数字、 a~f字母组成
System.out.println("工资="+salary);
System.out.println("age="+age);
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("二进制="+c);
System.out.println("八进制="+d);
System.out.println("十进制="+e);
System.out.println("十六进制="+f);
}
}
七、java运算符
1、算术运算符
操作符 | 描述 | 例子 |
+ | 加法 - 相加运算符两侧的值 | A + B等于30 |
- | 减法 - 左操作数减去右操作数 | A – B等于-10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取模 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增 - 操作数的值增加1 | B++ 或 ++B 等于 21 |
-- | 自减 - 操作数的值减少1 | B-- 或 --B 等于 19 |
2、赋值运算符
操作符 | 描述 | 例子 |
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A等价于C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
<< = | 左移位赋值运算符 | C << = 2等价于C = C << 2 |
>> = | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 |
&= | 按位与赋值运算符 | C&= 2等价于C = C&2 |
^ = | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 |
| = | 按位或赋值操作符 | C | = 2等价于C = C | 2 |