java笔记
百知教育学习 - 胡鑫喆 - java 语言基础
01_编程语言简介
- 程序:进行某项活动或过程所规定的途径
- 计算机
硬件:主板,硬盘,cpu等
软件:编程语言(将自然语言转换成计算机能听懂的语言)- 人:符号语言到自然语言
- 计算机:编程语言,机器语言
- 编程语言是人与计算机交流的媒介
- 编程语言:C,C++,C#,Java等
- 发展历程:
- C
- C++(在C的基础上多了面向对象)
- Java(纯面向对象)跨平台
02_Java的前世今生
- 1995年5月23日java发布,是由sun公司推出的一门富有创造力的面向对象的程序设计语言,是由“java之父”的詹姆斯·戈士林博士亲手设计而成的,他完成了java技术的原始编译和虚拟机。sun公司如今被oracle收购。
- 产生背景:当时互联网时代中Windows,unix等系统平台和IBM个人电脑,Mac苹果计算机等的硬件平台的各种设备的操作系统的不同,急需一种编程语言实现“一次编写,到处运行”。
- 前世今生:java最初的名字叫做oak,1995年被重命名为java,并正式发布,如今已成为最受欢迎的编程语言。
- 1995.5.23日java发布
- 1996年发布JDK 1.0
- 1999年发布J2SE,J2EE,J2ME
- 2005年更名Java SE,Java EE,Java ME
- 2009年被Oracle收购
- 2011年由Oracle发布Java 7.0
- 2014年由Oracle发布Java 8.0
- 前世今生:java最初的名字叫做oak,1995年被重命名为java,并正式发布,如今已成为最受欢迎的编程语言。
- 如何实现:软件—>操作系统—>硬件
- 软件:编程语言组成的一系列软件
- 硬件:主板等一系列硬件
- 操作系统DS
03_java特点
- 面向对象(使用计算机模拟现实世界,解决现实问题,贴近人类思维模式)(Java思想)
- 简单(相对C,C++,C#,不易造成内存溢出,减少代码量,代码可读性强)
- 开放(导致java的内容越来越多,知识面十分广阔)
- 跨平台(操作系统,服务器,数据库)
- java发展前景:新领域的出现会需要程序员编写,所以该领域会迎合Java来符合更多程序员胃口(强者恒强)
- 移动互联网:安卓(谷歌的一个手机操作系统),IOS等选用Java作为语言基础,所以Java工程师可以直接编写安卓软件
- 云计算(利用互联网积累的数据):以Java为语言基础
04_Java的运行机制
- 两种执行机制
- 编译执行:将源文件编译成机器码,一次编译,多次执行。执行效率高,但不可跨平台。典型语言:C语言,C++
- 解释执行:将源文件被一行一行解释,一行一行执行。不同的操作系统具备不同的编译器。执行效率低,可以跨平台
- Java先编译,再解释:.java—>.class(不是机器码文件)—>解释器文件(转换成机器码文件)
- 将源文件变异成字节码文件(平台中立文件.class),再将字节码文件进行解释执行。
- Java的设计理念:Write Once Run Anywhere
- 操作系统—>1Byte为8位,1位即1bit
- 16位:2B
- 32位:4B
- 64位:8B
- 每个平台的位数不同,所以需要统一标准。Java使用32位的,所以使用了Java虚拟机。
- Java虚拟机屏蔽了底层操作系统的差异
- JDK(Java开发工具包)(Java Development Kit)开发环境:包含JRE+类库+开发工具包(编译器+调试工具)
- JRE(Java Runtime Environment)运行环境:包含JVM和解释器,完整的Java运行环境
- JVM(Java Virtual Machine)虚拟机:
- 使用软件在不同的操作系统中,模拟相同的环境。虚拟机会替你申请相应的字节。不让你直接面对操作系统。 不同window必须使用 相应的虚拟机
- 解释器:解释class文件。
- JVM(Java Virtual Machine)虚拟机:
- 编译器
- 调试工具
- 类库
- JRE(Java Runtime Environment)运行环境:包含JVM和解释器,完整的Java运行环境
05_第一个Java程序
- 代码
编译时大小写无所谓,但运行时必须注意大小写
class Hello{
public static void main(String[] args){
System.out.println("hello world");
}
}
- DOS命令
- windows键+r键呼出运行窗口—>输入cmd并回车打开DOS命令窗口
- 更换盘符:d
- 查看当前目下的内容:dir
- 进入文件夹:cd 文件夹的名字
- 返回上一级目录:cd…
- 清空屏幕:cls
- 删除文件:del 文件名
- 删除文件夹:rd 文件夹名称
- 退出:exit
- 编译: javac+空格+源文件名称.java
- 运行: java+类名(即class后边的hello)
06_环境变量
-
Java_Home环境变量:通知其他应用本机装了JDK,装在了什么位置
-
Pass环境变量(javac,java命令都在bin目录):bin目录放入pass变量,则可以在任何目录下找到这些命令(而要使在任何目录下都能运行javac,则将javac放入bin目录)
-
ClassPass 类路径:运行类找到hello.class 环境变量为 . (. 表示当前目录)找到就运行,找不到就报错
-
换一个目录也运行hello类:把hello.class的目录放入classpass的环境变量值设置为相应目录
-
就是将 **.** 改为相应地址
-
写类时一般加一个访问权限,即访问修饰符,常用的时public,(即公开类)公开类要求源文件文件名和类名完全一致
- 当定义为一个公开类时,大小写不能出错
- 一个文件里能写很多个类,但只能写一个公开类(所以基本是一个源文件一个类)
public class Hello{
public static void main(String[] args){
System.out.println("hello world");
}
}
07_package语句
- package包
- 作用:类似于文件夹,用于管理字节码(.class)文件
- 语法—声明包:package 包名(声明所有类属于哪个包)
- 位置:必须写在源文件的第一行
- 带包编译:javac -d . 源文件名称.java(自动生成目录结构)
- 带包运行:java 包名.类名(包名+类名又称权限定名)
- 命名规则(采用域名倒置的规则):例如:www.baizhi.com.cn --> cn.com.baizhi.www
package a1;
public class Hello{
public static void main(String[] args){
System.out.println("hello world");
}
}
注意:
-
包应在一个文件夹里
-
必须让Hello这个类在a1这个包里
-
不在a1目录下运行Hello这个类
-
包声明必须在源文件的第一行
由于自主放包比较麻烦,所以可直接使用代码替代操作
-
-d:按照包结构输出(即自动按照包结构放入目录中,可自动创建目录)
-
. :生成的目录结构(即a1)放在当前目录下
-
注意:包名可叠加 类型:package a1.a2.a3.a4;
08_import语句
import
- import java.util.List 提前声明 list是指java.util.list
- import java.util.中的:代表所有类
- 不包含子包里的类
- import java. * . * (错误的写法)星号不能代表子包,只能代表类
- 如果有两个类用了*,且有不同的包拥有相同的类,则会报错 所以不能省略包名
- java中的所有类都有包名
package a1;
public class Hello{
public static void main(String[] args){
System.out.println("hello world");
}
}
string[ ] ,system
类默认包 java.lang包- 每一个java程序默认有一个java.lang.*(可写可不写)为隐含代码
- 使用lang下的子包时则要么写包名,要么写import
- 每一个java程序默认有一个java.lang.*(可写可不写)为隐含代码
java程序的基本结构:
-
包 package : 0-1个
-
导包 import : 0-n个
-
类 : 1-n(公开类只能写一个)