一.java前言
Java诞生于SUN(Stanford University Network),09年SUN被Oracle(甲骨文)收购。
1.Java技术体系平台
- JavaSE(Java Platform, Standard Edition标准版):允许您在桌面和服务器上开发和部署Java应用程序。Java提供了丰富的用户界面、性能、多功能性、可移植性和当今应用程序所需的安全性。
- JavaEE(Java Platform, Enterprise Edition企业版):是为开发企业环境下的应用程序提供的一套解决方案,主要针对于Web应用程序开发。
- JavaME(Java Platform, Micro Edition 小型版):为互联网上的嵌入式和移动设备上运行的应用提供了一个健壮、灵活的环境:微控制器、传感器、网关、移动电话、个人数字助理(PDA)、电视机顶盒、打印机等等。JavaME包括灵活的用户界面、健壮的安全性、内置的网络协议,以及支持动态下载的网络和离线应用程序。基于JavaME的应用程序在许多设备上都是可移植的,但是利用了每个设备的本机功能。
- Java Embedded(Im’bedId): 用于解锁物联网的智能设备的价值:
通过远程市场更新和刷新功能延长产品生命周期和价值;
利用Java的可伸缩性、健壮性、可移植性和全套功能,提高生产效率,降低成本,缩短上市时间;
在边缘启用快速数据功能; - Java Card:使安全元件(如智能卡和其他防篡改安全芯片)能够承载采用Java技术的应用程序。Java card提供了一个安全的、可互操作的执行平台,它可以在一个资源受限的设备上存储和更新多个应用程序,同时保持最高的认证级别和与标准的兼容性。
- Java TV:是一种基于JavaME的技术,它为开发在tv和机顶盒设备上运行的java应用程序提供了一个性能良好、安全且易于实现的解决方案。使用Java TV运行时,开发人员可以轻松创建应用程序,例如电子节目指南(EPG)、视频点播(VOD)客户端、游戏和教育应用程序、用于访问Internet数据的应用程序(例如天气、新闻播报器、社交网络)以及大多数蓝光光盘标题上的用户界面和奖金内容。
- Java Embedded(Im’bedId): 用于解锁物联网的智能设备的价值:
2.Java介绍
1.计算机编程语言:计算机能看懂的语言,我们能使用计算机编程语言对计算进下达指令
2.java之父:詹姆斯高斯林
3.java涉及到的领域:主要用于互联网领域,开发应用程序
a.各行各业的操作系统,网站
b.移动端:医疗设备上,超市打印小票机器,鸿蒙,安卓等
c.电商网站
d.物流管理
e.银行使用的操作系统等
f.桌面应用(idea)
g.企业级开发(服务器程序)
h.科学计算:机器人
i.大数据库开发:hadoop
j.游戏开发
4.目前安装的jdk版本:jdk8
3.字节
1.计算机中最基本的存储单元,叫做字节,用byte或者B
2.8个二进制位(bit)等于一个字节
3.存储单元的计算规则:
8bit = 1B
1024B = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
2的8次方=>256
-128-127->字节取值范围 byte
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
0或1 | 0或1 | 0或1 | 0或1 | 0或1 | 0或1 | 0或1 | 0或1 |
3.常用的dos命令
作用 | 命令 |
---|---|
切换盘符 | 盘符名:->回车->盘符名不区分大小写,但是我们得有这个盘 |
查看当前目录下的内容 | dir |
进入到指定的目录 | cd文件夹名 |
进入到多级目录 | cd 文件夹名\文件夹名 |
退到上一级目录 | cd…或者cd … |
退到磁盘位置 | cd\或者cd \ |
清屏 | cls |
关闭dos命令窗口 | exit |
创建文件夹 | mkdir 文件夹名 |
创建多级文件夹 | mkdir 文件夹名\文件夹名 |
删除文件夹 | rd 文件夹名(被删除的文件夹必须是空的,而且不走回收站) |
删除文件 | del 文件名.后缀名 |
批量删除指定类型的文件 | del *.后缀名 |
1.指定文件或者文件夹,可以用tab键自动补全
2.按上下箭头可以切换之前打过的命令
二.Java所需要的环境
1.jvm和跨平台
1.jvm:java虚拟机,是运行所有java程序的假想计算机,是java程序的运行环境之一,也是java最具吸引力的特性
之一,我们编写的java代码,都必须运行在jvm之上
2.跨平台:一个java代码可以在不同的操作系统上运行
跨:跨越
平台:操作系统
3.jvm和跨平台的关系:
一个java程序想要取不同的操作系统上运行实现跨平台,我们需要安装不同版本的jvm
2.JDK和JRE
1.JRE(Java Runtime Environment):java程序运行时所需要的环境,包含"jvm"和运行时所需要的"核心类库"
2.JDK(Java Development Kit):是java程序开发工具包,包含"JRE"和开发人员使用的工具(javadoc)
3.由于jdk包含了jre,jre又包含了jvm
所以只需要安装一个jdk即可
3.JDK安装
安装好后在jdk安装路径下的bin路径下使用cmd进入dos命令窗口:输入javac和java命令
javac:编译
Java:运行
未配置环境变量情况下,在其他路径无法使用javac及java命令
如果想在外部使用,需要配置环境变量
4.环境变量的配置
1.配置环境变量的目的:在任意路径下随意使用java及javac命令
2.配置方式:
- 直接将jdk安装路径的bin路径放到path路径下(不推荐原因:容易将path手滑删掉,导致系统中一些操作执行不了)
- JAVA_HOME(推荐)如下为具体操作步骤
2.1找到高级系统设置并点击
2.2找到环境变量并点击
2.3点击新建
2.4变量名为JAVA_HOME(必须大写)变量值为jdk安装路径bin路径的上一级路径
2.5找到系统变量的path点击编辑 -> 之后点击新建输入%JAVA_HOME%\bin ->配置完成->之后可在CMD命令提示框使用java或javac看是否成功执行来验证环境变量是否配置成功
三.Java第一个程序的开发
1.开发三步骤
1.编写:创建一个xxx.java文件 需要将文件名后缀设置成显示
2.编译:javac ->生成一个class文件(字节码文件),jvm运行java程序,只认识class文件
javac java文件名.java
例:javac test.java
3.运行:java
java class文件名 ->不要带后缀
例:java test
2.编写helloworld
public class test{
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
3.注释
1.注释:对代码的解释说明,不参与编译和运行
2.分类:
-
单行://注释内容
-
多行:
/*
注释内容
*/
-
文档注释:
/**
注释内容
*/
文档注释:可以使用javadoc命令生成此类相关的一个API文档,让别人快速了解此类的作用及成员
命令:javadoc -d 要生成的文件夹名字 -author -version 文件名.java
例:javadoc -d api -author-version Demo01HelloWorld.java
//单行注释 定义一个类,类名叫做Demo01HelloWorld
public class Demo01HelloWorld{
/*
叫做main方法,是程序的入口
*/
public static void main(String[] args){
//输出语句
System.out.println("HelloWorld");
}
}
文档注释:可以使用javadoc命令生成此类相关的一个API文档,让别人快速了解此类的作用及成员
命令:javadoc -d 要生成的文件夹名字 -author -version 文件名.java
例:javadoc -d api -author-version Demo01HelloWorld.java
/**
这是一个Java入门程序
@author 我
@version v1.0
*/
public class Demo02HelloWorld{
/**
main方法的作用为程序的入口
*/
public static void main(String[] args){
//输出语句
System.out.println("HelloWorld");
}
}
/*
public class Demo03HelloWorld
public:权限修饰符,代表公共的(面向对象时说)
class:代表的是类
Demo03HelloWorld:类名,要求和java文件名保持一致
在定义一个类:类是java程序最基本的组成单元
所有的代码都要在class类中写
*/
public class Demo03HelloWorld{
/*
public static void main(String[] args)
public :权限修饰符,代表公共的(面向对象时说)
static:静态关键字(面向对象时说)
void:代表方法无返回值(讲方法的时候说)
main:方法名
(String[] args):main方法的参数,参数类型为String数组,参数名为args(后面说)
main方法是java程序的入口,jvm执行java程序从main方法开始执行 mian
*/
public static void main(String[] args){
//输出语句(打印语句),可以将我们的结果输出到控制台上
System.out.println("HelloWorld");
}
}
4.关键字
1.关键字:Java提前定义好的具有特殊含义的小写单词
5.编写HelloWorld时需要注意的问题
-
字符编码问题
1.当cmd命令行窗口的字符编码与java源文件中的字符编码不一致时,就会在dos命令窗口中出现乱码,原因是
写代码的时候,编码为:UTF-8
dos命令窗口默认字符集:GBK
a.如果是英文,在这两个编码中(UTF-8和GBK)一个字符就占一个字节
b.如果是中文,同样的中文内容在这两个编码所占字节数不一样
UTF-8:一个中文占三个字节
GBK:一个中文占两个字节
6.源文件名(Java文件名)与类名一致问题
1.源文件名不一定与类名一致
a.如果class前面没有public,此时类名可以和java文件名不一致
b.如果class前面有public,此时类名必须和Java文件名保持一致
2.一个源文件可以有多个类,但是要定义非public的
3.main方法不是必须在public的类中吗但是后面main方法都要写在public的类中
1.不管class是否为public的,我们的类名都建议和java文件名保持一致
2.我们尽量在一个java文件中定义一个class类
3.main方法全部放到public的类中
四.常量
1.在代码运行过程中,值不会发生改变的数据
2.分类:
整数常量:所有整数,包括正负 -1 1
小数常量:所有带小数点的 2.5 2.0
字符常量:带单引号的’'单引号中必须有,且只能有一个内容
‘1’ 对
‘11’ 不对
‘1a’ 不对
’ ’ 对
’ ’ 不对(此处为俩空格)
‘tab键’ 对
字符串常量:带双引号""双引号中的内容随意
布尔常量:true false->用于判断条件
空常量:null -.代表数据不存在->不能直接使用
public class Demo06HelloWorld{
public static void main(String[] args){
//整数常量
System.out.println(1);
System.out.println(-1);
//小数常量
System.out.println(2.5);
System.out.println(2.0);
//字符常量
System.out.println('1');
//System.out.println('11');''中必须有且只能有一个内容 11算两个内容
//System.out.println('');''中必须有且只能有一个内容
System.out.println(' ');//一个空格算一个内容
//System.out.println(' ');//一个空格算一个内容,两个空格就是两个内容
System.out.println(' ');//tab键算一个内容
//字符串常量
System.out.println("张无忌和赵敏以及周芷若还有小昭以及朱九真...没羞没臊的故事");
System.out.println("");
//布尔常量
System.out.println(true);
System.out.println(false);
//空常量
//System.out.println(null); null代表数据不存在,不能直接引用
}
}
public class Demo07HelloWorld{
public static void main(String[] args){
System.out.println(10+3);//13
System.out.println(10-3);//7
System.out.println(10*3);//30
System.out.println(10/3);//3 如果/前后都是整数,取的整数部分
System.out.println(10/3.0);// 如果/前后有一个是小数,结果就是带小数点的
}
}
五.变量
1.概述:在代码运行过程中,值可以根据不同的情况随时发生改变的数据
int price = 10;
price = 8;
2.作用:临时存储一个数据
3.变量的类型:
基本数据类型:(4类8种)
a.整形:byte int short long
b.浮点型:float double
c.字符型:char
d.布尔型:boolean
引用数据类型:(5种)
a.类
b.数组
c.接口
d.枚举
e.注解
4.整数默认类型为int
小数默认类型为double
5.按照取值范围从小到大排列
byte short char ->int ->float->double
6.特殊的类型:字符串类型
用String表示,但String不属于基本类型,属于一个类,所以属于引用数据类型,只不过String类型的格式和基本数据类型一样
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节 | -128 至 127 定义byte变量时超出范围,废了 |
短整型 | short | 2个字节 | -32768 至 32767 |
整型 | int(默认) | 4个字节 | -231 至 231-1 正负21个亿 |
长整型 | long | 8个字节 | -263 至 263-1 19位数字 |
单精度浮点数 | float | 4个字节 | 1.4013E-45 至 3.4028E+38 |
双精度浮点数 | double(默认) | 8个字节 | 4.9E-324 至 1.7977E+308 |
字符型 | char | 2个字节 | 0 至 216-1 |
布尔类型 | boolean | 1个字节 | true,false(可以做判断条件使用) |
public class Demo08Var{
public static void main(String[] args){
//byte
byte num1 = 100;
num1 = 101;
//num1 = 200;超出了byte的取值范围了
System.out.println(num1);
//short
short num2 = 100;
System.out.println(num2);
//int 整数默认类型
int num3 = 100000000;
System.out.println(num3);
/*
long 定义long型的变量,习惯上再值得后面加上L或者l
建议用L
*/
long num4 = 100000000L;
System.out.println(num4);
/*
float 定义float型的变量,请在小数后面加F或者f
建议用F
*/
float num5 = 2.5F;
System.out.println(num5);
/*
double
*/
double num6 = 2.5;
System.out.println(num6);
/*
char 代表字符变量
*/
char num7 = '中';
System.out.println(num7);
/*
boolean
true false
*/
boolean num8 = true;
boolean num9 = false;
System.out.println(num8);
System.out.println(num9);
/*
num9代表的是false
相当于将num9的false赋值给了变量num8,此时num8的true被覆盖了,变成了num9的false了
*/
num8 = num9;
System.out.println(num8);
/*
String 字符串
*/
String s = "atguigu";
s = "taoge";
System.out.println(s);
}
}