JavaSE(1)
前言
- 詹姆斯.高斯林就是Java语言的语言之父。
- Java是SUN 1995年推出的一门高级编程语言。
1. Java用途广泛
- 银行系统,支付系统,政企信息系统,大数据平台,网站后台,SaaS云,手机APP,云系统后台,电商系统,桌面工具
Java/c python
2.Java特性和优势
- 使用人多
- 简单性
- 面向对象 万物皆对象
- 可移植性
- 高性能
- 分布式
- 动态性
- 多线程
- 安全性
- 健壮性
解释Java三个特性:
(1)特点一:面向对象。
1、俩个基本概念:类、对象。
2、三大特性:封装、继承、多态。
(2)特点二:健壮性。
吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。
(3)特点三:跨平台性。
1、跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Wrrite once,Run Anywhere”
2、原理:只需在需要运行Java应用程序的操作系统上,先安装一个Java虚拟机(Jvm Java Virtual Machine)即可。由JVM来负责Java程序在该系统中的运行。
思考:Java为什么能成功?
3.Java三大版本
- JavaSE:标准版 (桌面程序,控制台开发…)
- JavaME:嵌入式开发 (手机,小家电…)知道即可,使用少
- JavaEE:E企业级开发(web端,服务器开发…)广泛
4.JDK、JRE、JVM
- JDK: Java Development Kit
- JRE: Java Runtime Environment
- JVM: Java Virtual Machine
JVM解释:
(1)JVM称为Java虚拟机,在Java平台有着举足轻重的地位。
(2)JVM可以理解为Java编辑器和操作系统间的虚拟处理器。
(3)JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。
注:JDK包含着JRE和JVM
5.Java开发环境搭建
-
JDK下载与安装 Oracle收购了
配置环境变量
JDK的安装:
(1) 百度 搜索JDK8 ,找到下载地址,同意协议,下载电脑对应的版本,双击安装JDK,傻瓜式安装,下一步即可。
(2)记住安装路径,配置环境变量
(3)配置方法:
1、我的电脑(计算机) 右键——属性——高级系统配置——环境变量。
2、编程Path环境变量,在变量值开始处加上JDK所在目录,后面用“;”和其他分隔开。(也可以新建一个变量名Java_HOME,变量值为JDK路径)
3、打开DOS命令行,任意目录下敲入Javac。 4、测试JDK是否安装成功:打开cmd,输入Java -version
JDK的卸载:
(1)删除Java安装目录
(2)删除Java_HOME
(3)删除path下关于Java目录
-
JDK目录介绍
-
HelloWord及简单语法规则
-
Notepad++ 安装与使用(使用于初学者,易牢记代码)
6.第一个Java程序 HelloWord
public class HelloWord {
public static void main(String[] args) {
System.out.println("HelloWord");
}
}
- 打开cmd,进入到HelloWord所在路径输入javac HelloWord.java 编译为.class文件,在输入java HelloWord 也可以运行
注:可能遇到的情况:1.java是大小写敏感的2.尽量使用英文3.文件名和类名必须保持一致,并且首字母大写4.符号使用了中文
7.Java程序运行机制
- 编译型
- 解释型
java程序运行机制图:
8.IDEA安装
- 什么是IDEA?
- 集成开发环境
- IDEA介绍
9.Java基础语法
-
注释:
- 书写注释一种非常好的习惯,平时写代码一定要注意规范
-
Java三种注释:
- 单行注释:// 注释一行文字
- 多行注释:/* */ 注释多行文字
- 文档注释:/** */
//单行注释 /*多行 注释 */ /**文档注释*/
-
标识符:
- 关键字:(50个)
(1)用于定义数据类型的关键字。
class、interface、enum、byte、short、int 、long、float、double、char、boolean、void
(2)用于定义流程控制的关键字。
if、else、switch、case、default、while、do、for、break、continue、return
(3)保留关键字。
const、goto
(4)用于定义访问权限修饰的关键字。
private、protected、public
(5)用于定义类、函数、变量修饰的关键字。
abstract、final、static、synchronized
(6)用于定义类与类之间的关键字。
extends、implements
(7)用与定义建立实例及引用实例的关键字。
new、this、super、instanceof
(8)用于异常处理的关键字。
try、catch、finally、throw、throws
(9)用于包的关键字
package、import
(10)其他修饰符关键字
native、strictfp、transient、volatile、assert -
标识符注意点:
- 所有的标识符都应该从字母(AZ或者az),美元($),下划线(_)开始
- 首字符之后可以是字母(AZ或者az),美元($),下划线(_)或数字的任何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
例子:
- 合法标识符举例:age,$salary,_value…
- 非法标识符聚类:123abc,-salary,#abc…
可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low
-
数据类型
-
Java 强类型语言:要求变量的使用要严格符合规范,所有变量都必须先定义后才能使用
特点:安全性提升,速度下降
-
弱类型语言:可以不符合规范
特点:安全性下降,速度提升
-
long num=30L;//long类型要在数字后加个L,也可以不加(推荐加)
float num1=50.1F;//float类型要在数字后面加个F,也可以不加(推荐加)
//String不是关键字,是类
10.什么是字节
-
位:(bit)是计算机内部数据储存的最小单位,11001100是一个二进制数
-
字节:(byte)是计算机数据处理的基本单位,习惯上用大写B来表示
1B(byte,字节)=8bit(位)
-
字符是指计算机使用的字母,数字和符号
1bit表示1位,1Byte表示一个字节,1B=8b
1024B=1KB,1024KB=1M,1024M=1G
思考:电脑的32位和64位的区别是什么呢?
11.扩展
-
整数扩展
-
进制 二进制B 八进制O 十进制D 十六进制H
int i=10; int i1=010; int i2=0x10; System.out.println(i); System.out.println(i1); System.out.println(i2);
-
-
浮点数扩展
- 银行业务怎么表示?钱
- BigDecimal数字工具类
-
float 有限 离散 舍入误差 大约 接近但不等于
-
double
-
最好避免是由浮点数进行比较
float f=0.1F; double d=1.0/10; System.out.println(f==d); float d1=2437348343F; float d2=d1+1; System.out.println(d1==d2);
-
字符扩展
char c1='a'; char c2='中'; System.out.println(c1); System.out.println((int)c1); System.out.println(c2); System.out.println((int)c2);
-
所有的字符本质还是数字
-
编码 Unicode表:(a=97,A=65)2字节0~65536 Excel 2^16=65536
-
U0000 UFFFF
char c3='\u0061'; System.out.println(c3);
- 转义字符
- \t 制表符
- \n 换行
-
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa==sb);
String sc = "hello world";
String sd = "hello world";
System.out.println(sc==sd);
对象 从内存分析
-
布尔值扩展
boolean flag=true; if (flag==true){//新手写法 } if (flag){//老手写法 } //less is More! 代码要精简易懂
12.类型转换
-
运算中,不同类型的数据先转化为同一类型,然后进行运算
-
强制类型转换:(类型)变量名 高——低
-
自动类型转换: 低——高
-
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出或者精度问题
-
操作比较大的数的时候,注意溢出问题
-
JDK7新特性,数字之间可以用下划线分割
int money=10_0000_0000; int years=20; int total=money*years;//计算的时候已经溢出了 long total1=money*years;//默认是int,转换之气那已经存在问题了 long total2=money*((long)years);//先把一个数转换为long System.out.println(total); System.out.println(total1); System.out.println(total2);
13.变量
-
数据类型 变量名=值;
int years=20;
- 注意:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
-
变量作用域
-
类变量,实例变量,局部变量
public class Variable { static int allClicks=0;//类变量 static String str="hello world";//实例变量 从属于对象,如果不自行初始化,这个类型的默认值0,0.0。布尔值:默认值是false。除了基本类型,其余的默认都是null public void method(){ int i=0;//局部变量 } }
-
14.常量
-
变量
-
常量(Constant):初始化(initialize)后不能再改变值!不会变动的值
-
所谓的常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
-
final 常量名=值;
final double PI=3.14;
-
常量名一般使用大写字符
-
static final //修饰符,不存在先后顺序
-
-
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则。例子:monthSalary,lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线。例子:MAX_VALUE
- 类名:首字母大写和驼峰原则。例子:Man,GoodMan
- 方法名:首字母小写和驼峰原则。例子:run(),runRun()
15.运算符
-
运算符
- 算术运算符:+,-,*,/,%(取余,模运算),++(自增),–(自减)
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>(了解即可)
- 条件运算符:? :(三元运算符)
- 扩展赋值运算符:+=,-=,*=,/=,
ctrl+D,把鼠标拖到下一行 实现复制当前行到下一行
-
实例
- ++ –
//++ 自增 --自减 一元运算符 int a = 3; int b = a++;//执行玩这行代码后,先给b赋值,再自增 int c = ++a;//执行完这行代码前,先自增,再给b复制 System.out.println(a); System.out.println(b); System.out.println(c);
-
幂运算
-
2^3 三个2相乘 Java没有^,有Math
double pow=Math.pow(2,3); System.out.println(pow);
很多运算,我们会使用一些工具类来操作!
-
-
逻辑运算符
-
&& 与(and) || 或 (or) ! 非(取反)
-
逻辑运算符 :两个变量都为真,结果才是true
-
逻辑或运算:两个变量有一个为真,则结果才为true
-
逻辑非运算:如果是真,则变为甲;如果是假,则变为真
-
短路运算
int d=5; boolean e=(d<4)&&(d++<4); System.out.println(e);
-
注意:逻辑与运算&& 如果一上来发现前面一个是加,就不用看后面,结果为false
-
位运算符
/* A = 0011 1100 B = 0000 1101 A&B = 0000 1100 与,两个对应都为1,结果才为1 A|B = 0011 1101 或,有一个为1,结果才为1 A^B = 0011 0001 取余,两个对应的一样,结果为0,否则为1 ~B = 1111 0010 取反,与对应的B完全不一样 */ //2*8=16 四个2相乘 ,2*8怎么算最快,位运算符 //右移 << 代表*2 //左移 >> 代表/2 效率极高 System.out.println(2<<3);//结果为16
-
扩展赋值运算符
int f=16; int h=8; f+=h;//f=f+h System.out.println(f);//24 f-=h;//f=f-h System.out.println(f);//16 f*=h;//f=f*h System.out.println(f);//128 f/=h;//f=f/h System.out.println(f);//16
-
字符串连接 +,String String出现在前面,结果为字符串拼接;后面,怎为运算
int k=10; int l=20; System.out.println(""+k+l);//1020 System.out.println(k+l+"");//30
思考:如果出现在中间呢?(k+""+l)
System.out.println(k+""+l);//1020
-
三元运算符
格式:x?y:z;
x为条件,如果x为true,则结果为y,否则为z
boolean y= (10>20) ? true:false; System.out.println(y);//false
16.包机制
-
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间
-
语法格式:
package pkg1{·pkg2{·pkg3…}}
-
一般利用公司域名倒置作为包名,例:www.baidu.com 为com包下baidu包下www
-
为了能使用某一个包的成员,导入该包,用“import”语句完成此功能
import java.util.List;
注:.*,导入这个包下所有的类!
17.JavaDoc
- JavaDoc命令是用来生产自己API文档的
- 参数信息:
- @author作者名
- @version版本号
- @since指明需要最早使用的JDK版本
- @param参数名
- @return返回情况
- @throws异常抛出情况
- cmd ——javadoc -encoding UTF-8 -charset UTF-8 Doc.java 生成文档
- 作业:学会查找使用IDEA生成JavaDoc文档! 面向百度编程!
- Javadoc 参数 Java文件