Core Java 基础知识
1、Java历史:java之父Golsling
1995年5月23日 Java诞生
1998年12月 1.2版本 Java2 J2SE J2EE J2ME
2004年12月 1.5版本(5.0) Java JavaSE JavaEE JavaME
2006年12月 1.6版本(6.0)
2、 Java SE — Java标准平台
Java EE — 企业级平台
Java ME — 微小平台,用在资源受限的平台上
3、环境变量的设置
Linux下: /etc/.profile这是所有用户的全局的文件
主目录下的vi .bash_profile这是当前的用户的配置文件
export JAVA_HOME=/opt/jdk1.6.0_03 指向java的安装目录
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH 指向安装目录下的bin子目录
export CLASSPATH=.:$JAVA_HOME/lib 类路径 .指当前路径
配置完以后用source .bash_profile或注销使配置生效
注:使用source只会使配置在当前终端中生效。
windows下:我的电脑(右键)—>属性---->高级----->环境变量
用户变量针对的是当前用户
系统变量针对所有的用户
在用户变量和系统变量这两个里面只配一个
JAVA_HOME=c:\Program Files\Java\jdk1.6.0_03(不是JRE)
path=%JAVA_HOME%\bin (可执行文件) (path里原有的内容不要改变,只在其后进行添加即可,使用;把原有信息和JAVA_HOME分开)
CLASSPATH=.;%JAVA_HOME%\lib;
验证是否配置成功:在cmd后,输入javac就可以了,看是否有帮助信息
Linux下:在命令行输入javac就行了或用java -version检查版本信息
4、java的特点:
1、java是一种纯面向对象的编程语言
2、跨平台:一次编译,到处运行(write once,run anywhere)
编译(javac)
.java(源文件)----->.class(字节码–与平台无关)
解释(java)
.class-------->可执行文件
java虚拟机(JVM):由虚拟机处理操作系统之间的差异,实现跨平台
5、第一个程序
文件名:HelloWorld.java
package mypack; //package是关键字,在这代表一个目录,mypack是包名
public class HelloWorld {
//public也是关键字,代表这个类是公共的。class也是关键字,代表类。
//HelloWorld是类名。文件名要与公开的类名完全相同
public static void main(String[] args) {
//public 与 static 的位置可以交换,其它的不可以换位也不可以省略,static是关键字,静态的意思,是全局的。 //void是返回类型,表示无返回值,main是方法名。
//String[]代表字符串数组,args代表数组名。
System.out.println(“HelloWorld”); //表示在控制台上打印HelloWorld
}
}
编译:javac -d . HelloWorld.java javac 文件名,-d是按照包结构生成.class文件,若目录不存在,会自动创建 运行:java mypack.HelloWorld java 包名+类名
注意:一个Java源程序可以有多个类,一个类对应一个.class文件
如果一个Java源文件中有公开类,则源文件的文件名必须与公开类的类名完全同名(大小写也要相同)
一个源文件中至多只能有一个公开类
6、包的概念:
文件多了用文件夹管理,类多了用包来管理,包和目录的结构一一对应
关键字package mypack; mypack是包名
编译带包名的文件时 javac -d . HelloWorld.java -d是按照包结构生成.class文件,若目录不存在,会自动创建, .代表当前 运行时 java mypack.HelloWorld 注意:运行时要使当前目录在mypack的上一级,不能进入mypack目录下运行
java常用包
java.lang 核心包 JVM自动加载
java.awt/javax.swing/java.awt.event GUI
java.applet 小应用程序 动态网页
java.io 输入输出 (读写文件、网络信息交互)
java.net 网络
java.util 工具包(算法、数据结构、模式、常用工具)
java.sql/javax.sql 操作数据库(JDBC)
*javax为扩展包、其中最重要的是lang、util和sql三个包
注意:
package
import
class
这三个顺序是不可改变的
习惯上:加包,加注释,换行,缩进
7.注释(comments)
注释是用于表述程序相关信息,是给人看的
注释不会被编译
三种类型
a.// 单行注释
b./…/ 多行注释
c./**…*/ 文档注释 可以被java doc提取 生成API
8.标识符identifiers
标识符用于起名字(包名、类名、方法名、变量名)
限制:
a.必须以字符、下划线或美元$开始,后边可以跟字母、下划线、美元或数字
*数字不能以数字开头
b.区分大小写 (case sensitive)
c.长度无限制
d.支持中文 (不建议使用,编码问题、识别问题)
e.不能与java关键字冲突
9.命名规范:
a.包名全小写,不同单词用.隔开
b.类名所有单词首字母大写
c.方法名和变量名首字母小写,其他单词首字母大写
d.常量所有字母大写,不同单词用_分隔
10.关键字keywords
java关键字一共50个关键字和3个保留字
关键字:
abstract 抽象
continue 循环继续
for for循环
new 申请内存
switch 分支
assert 断言 1.4加入
default swtich中使用
goto 预留关键字 java中无用
package 声明包
synchronized 线程同步
boolean 布尔类型
do do while 循环
if if分支
private 私有
this 本类对象
break 循环跳出 switch跳出
double 双精度浮点类型
implements 类实现接口
protected 受保护 private<protected<public
throw 抛异常
byte 字节类型
else if分支
import 导入
public 公共
throws 抛异常
case switch分支
enum 枚举 5.0
instanceof 判断对象类型
return 返回值
transient 对象序列化
catch 捕获异常
extends 类继承类 接口继承接口
int 整型
short 短整型
try 捕获异常
char 字符型
final 最终的
interface 接口
static 静态
void 无返回
class 类
finally 捕获异常
long 长整型
strictfp 精确浮点运算 1.2
volatile 线程中使用
const 预留关键字 java中无用
float 单精度浮点类型
native 用于调用本地方法,无法跨平台
super 父类对象
while while循环
保留字:
null 空
true 真
false 假
11.基本数据类型(primitive date types)
基本类型
a.布尔型
boolean true/false 默认值false
意味着布尔值和整数不能转换 if(1) //error!!!
b.字符类型
char 16位
char必须在’'中且只能有一个字符
c.整型
byte 8位 -128到127
short 16位 -215到215-1
int 32位 -231到231-1
long 64位 -263到263-1
long o = 5L;
d.浮点型
float 32位 float f = 1.0F
double 64位
引用类型
a.类
b.接口
c.枚举 5.0
d.元数据 5.0
e.数组
类型的转换
float f = 2.5F;
double d = 3.7;
//f = d; Error
f = (float) d;
d = f;
高位变量给低位变量赋值时要强制类型装换
byte->short->int->long
float->double
基本类型和引用类型的内存分配
栈:后进先出,简单类型入栈,引用类型变量入栈(给以在堆空间的内容的首地址)
堆:引用类型内容放入堆空间。
12.变量
全局变量:类变量(用static修饰的);成员变量(有默认值)。
全局变量会有默认值
int:0
char:’\u0000’
double:0.0
boolean:false
Object:null(eg:String)
局部变量:在方法中定义的变量、参数
局部变量没有默认值,必须先初始化后使用
13.运算符(operators)
算数运算符:
+ - * / %
赋值运算符:
= += *= ……
逻辑运算符:
&逻辑与 |逻辑或
&&短路与 ||短路或
&& 短路与,前面为假,表达式为假,后面的操作不会进行,& 非短路运算符,会对所有条件进行判断。
|| 短路或,前面为真,表达式为真,后面的操作不会进行,| 会对所有条件进行判断.
例 int a = 4;
if(a<3&(b=a)==0) b赋值
if(a<3&&(b=a)==0) b不赋值
条件运算符
? :
int salary =8000;
System.out.println(
salary>10000?“大于一万”:“不大于一万");
其他运算符
++ --
i++ 先用后加
++i 先加后用
int i = 1;
System.out.println(i++);
System.out.println(++i);
Q:打印结果是什么