lang-java

JAVA精通

第一章 JAVA概述

1.1 java概述

  1. 简单:比C和C++简单,没有操作符重载、多继承、指针
  2. 面对对象
  3. 分布式:java的RMI远程方法调用协议可以支持分布式程序开发
  4. 健壮性:java是静态语言机制、异常处理机制、泛型可以使得java程序更加健壮
  5. 安全:java的GC机制、字节码验证、类加载器(ClassLoader)防范恶意代码
  6. 跨平台:可以在任何平台使用
  7. 解释型:java解释器对字节码进行解释执行
  8. 高性能:JIT编译器会将java源程序编程成字节码
  9. 多线程:java支持多线程,并提供线程之间的同步机制
  10. 动态:反射机制、动态类型转换导致java被视为准动态语言

1.2 java安装与配置

JDK下载链接:http://www.oracle.com

安装注意事项:

  1. 安装路径不要出现中文、空格、特殊字符
  2. 当提示安装JRE是,可以不安装,JDK中包含JRE
  3. 配置JAVA_HOME:很多框架和软件会默认通过JAVA_HOME获取java安装目录
  4. 配置Path:为了让系统在任何位置都可以访问二进制可执行文件,使用java命令,默认优先在当前目录找,然后在指定目录找
  5. 配置classpath:为了让系统在任何位置都可以访问.class编译文件,默认优先在当前目录找,然后在指定目录找

JAVA_HOME: C:\JiangHai\soft\jdk8u25
Path: %JAVA_HOME%\bin
classpath: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

三个坑:

  1. 后缀名称:显示所有文件后缀名称
  2. IDE乱码:将notepad++的编码改为anis(gbk/gb2312)
  3. 重启IDE:在环境编码改变之后,需要重启CMD/IDE

第二章 java语言基础

2.1 标识符

java中对类、变量、方法、参数命名时使用的字符串称为标识符

标识符命名规则:

  1. 禁止以数字开头,允许以字母、$符、下划线开头
  2. 禁止使用特殊字符(~!@#$%^&*(),避免使用中日俄文
  3. 区分大小写
  4. 做到见名知意

2.2 关键字

class extends implements interface import
package break case continue default
do if else for return
switch while false true null
boolean byte char short int
long float double try catch
throw throws finally abstract fianl
native private protected public static
synchronized transient volatile instanceof new
super void assert enum goto
const * *

2.3 修饰符

2.3.1 访问控制修饰符

修饰符 当前类 包内 子类(包内) 子类(包外) 包外
public Y Y Y Y Y
protected Y Y Y Y
default Y Y Y
private Y

2.3.2 非访问控制修饰符

1.static

类属性
1.不能修饰局部属性

类方法
1.在类方法内不能使用对象属性

2.final

常量类
1.不能被继承或修改

常量属性
1.不能被继承或修改,属性值可以修改
2.常量必须初始化

常量方法
1.不能被继承或修改

3.abstract

抽象类
1.不能实例化
2.abstract和final冲突
3.有抽象方法的一定是抽象类
4.抽象类可以有非抽象方法

抽象方法
1.只有声明,没有实现
2.abstract和static和final冲突

2.3.3 非访问控制修饰符-线程安全

1.synchronized

同一时间只能被一个线程访问

public synchroniaed void show() { ... }

2.transient

序列化时,jvm跳过该属性

public  transient int a = 55;  //不会被序列化
public int b = 66; //被序列化

3.volatile

1.volatile修饰的属性,在某线程访问时,会强制去共享内存重新获取属性值

2.当属性值发生变化时,会立刻同步到共享内存

2.4 数据类型

2.4.1 数据分类

1.基本数据类型

2.引用类型

2.4.2 基本数据类型

1.整型:byte、short、int、long

2.浮点型:float、double

3.字符型:char

4.布尔型:boolean

2.4.3 数据取值范围

1.整型

数据类型 字节数 取值范围
byte 1字节 -2^7 ~ 2^7-1
short 2字节 -2^15 ~ 2^15-1
int 4字节 -2^31 ~ 2^31-1
long 8字节 -2^63 ~ 2^63-1

2.浮点型

1.float类型的数值有一个后缀F(例如:3.14F)

2.没有后缀F的浮点数值(如3.14)默认为double类型

float f = 1.1F;
double d = 1.1;

数据类型 字节数 取值范围
float :单精度 4字节 -2823 ~ 2823(8是指数,23是尾数)
double :双精度 8字节 -21152 ~ 21152(11是指数,52是尾数)

3.字符型

- 一个中文占2个字节
- 普通数字、字母等使用ASCII码
- 中文使用unicode码

public class Demo6_char {
	public static void main(String args[]) { 
    	    char a = 'a';         // 普通的字母、数字、特殊字符都是在底层使用ASCII码  
		char c = '李';        // 汉字使用的unicode码     
		String s = "中国";    // 字符串        
		
		// byte、short、char、Int在进行运算的时候都是转为Int型运算的
		System.out.println(c + 12); 
   
                // 字符串在 + 法运算符,是连接字符串,结果为: 中国12
                System.out.println(s + 12); 
	}    
}


字符运算:
强制转换
	char c = '!';
	System.out.println((int)c);

隐式转换
	char c = '!';
	int i = 10;
	System.out.println(c + i);
    // 43,在简单类型的整数计算中,所有整型都会被转为int类型做运算

数据类型 字节数 取值范围
char 2字节 0 ~ 65536

4.布尔型

boolean不能转化为任何类型

数据类型 字节数 取值范围
boolean 1字节 false、true

2.4.4 数据类型转换

1.整型默认申明为int型,若需要long型,如:long b = 100L;

2.浮点型默认申明为double型,若需要float型,如:float b = 3.14F;

2.4.5 科学计算法

314000 = 3.14E5 = 3.14 * 10^5 (3.14乘以10的5次幂)

2.5 常量与变量

2.5.1 常量和变量区别

1.常量:不可以改变值

2.变量:可以改变值

2.5.2 成员变量和局部变量

1.成员变量:默认有初始值

2.局部变量:无初始值,必须自己设置

2.5.3 成员变量的初始值

数据类型 默认值
byte 0
short 0
int 0
long 0L
float 0.0F
double 0.0
char ''
boolean false
引用类型 null
posted @ 2020-05-29 15:36  jianghai0702  阅读(9)  评论(0)    收藏  举报