JAVA学习第一、二、三周
目录
一、认识JAVA
1、JAVA介绍
2、JAVA优点
3、Java SE 和 Java EE
二、环境配置
1、编程环境:安装JDK、JRE
2、系统环境变量设置
3、编程工具
3、JAVA体系结构
5、编译步骤(工作原理)
6、编译器和编辑器
三、JAVA代码结构
1、代码块
2、public class
3、字节码
4、命名规则
5、输出打印:System.out.println("");
6、键盘输入:Scanner
7、随机函数random()
四、JAVA语言基础
1、位运算
2、标识符
3、数据类型
4、短路操作
5、四舍六入
五、JAVA面向对象
1、一维、二维数组
一、认识JAVA
1、JAVA介绍
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
Sun公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了改造,去除了留在C++的一些不太实用及影响安全的成分,并结合嵌入式系统的实时性要求,开发了一种称为Oak的面向对象语言。1995年Oak更名为Java
2、JAVA优点
1.简单性:Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序,因为Java没有结构,数组和串都是对象,所以不需要指针。
2.面向对象:Java是一个面向对象的语言。
3.分布性:Java设计成支持在网络上应用,它是分布式语言。网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。
4.编译和解释性:Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。
5.稳健性:Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。
6.安全性:Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。
7.可移植性:Java环境本身对新的硬件平台和操作系统是可移植的。
8.高性能:Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。
9.多线程性:Java是多线程语言,它提供支持多线程的执行(也称为轻便过程),能处理不同任务,使具有线索的程序设计很容易。
10.动态性:Java语言设计成适应于变化的环境,它是一个动态的语言。
3、Java SE 和 Java EE
Java SE——J2SE 称为Java标准版,该平台可以开发java桌面应用程序和低端的服务器应用程序。
Java EE——J2EE 称为Java企业版,该平台可以构建企业级的服务应用,Java EE平台包含了 Java SE平台。
二、环境配置
1、编程环境:安装JDK、JRE
JDK——JDK(Java Development Kit)称为Java开发包或Java开发工具,是一个编写Java的Applet小程序和应用程序的程序开发环境。JDK是整个Java的核心,包括了Java运行环境(Java Runtime Environment),一些Java工具和Java的核心类库(Java API)。里面包含了编译器javac.exe 和 解释器java.exe
JRE——Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(JAVA Runtime Environment),JRE是支持Java程序运行的标准环境
JRE是个运行环境,JDK是个开发环境。因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE。而JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常运行Java程序。但由于JDK包含了许多与运行无关的内容,占用的空间较大,因此运行普通的Java程序无须安装JDK,而只需要安装JRE即可
2、系统环境变量设置
(1)设置系统变量JAVA_HOME
我的电脑——属性——系统特性——高级属性设置——环境变量(或者直接按键盘windows键,设置——搜索环境变量)
添加系统环境变量(不是用户环境是系统环境),让该环境变量值是JDK目录结构的根目录(就是安装路径)。
(2)系统环境变量Path设置
目的是为了能在任何目录中使用安装的JDK平台里面的Java编译器javac.exe和Java解释器java.exe,所以要在系统环境中设置Path
点击编辑系统变量,在Path里面添加新值 JDK安装路径加上\bin (因为Java编译器javac.exe和Java解释器java.exe在\bin目录下)
因为第一步设置里JDK的安装路径为JAVA_HOME了,所以可以用%JAVA_HOME%替代JDK的安装路径,,现在只需要在后面添加上\bin就行
3、编程工具
Eclipse:一个开放源代码的、基于Java的可扩展开发平台。
NetBeans:开放源码的Java集成开发环境,适用于各种客户机和Web应用。
IntelliJ IDEA:在代码自动提示、代码分析等方面的具有很好的功能。
MyEclipse:由Genuitec公司开发的一款商业化软件,是应用比较广泛的Java应用程序集成开发环境 。
EditPlus:如果正确配置Java的编译器“Javac”以及解释器“Java”后,可直接使用EditPlus编译执行Java程序 。
4、JAVA体系结构
是跨平台的,只需一次编译生成字节码就可以到任何系统去运行 原理:使用虚拟机JVM统一字节码(JVM是由大厂维护,攻克不易,反汇编困难,所以JAVA系统是很安全的) Java不是类型语言(编译型和解释型) 编译型:一次性翻译完再执行 解释型:翻译一句执行一句
5、编译步骤(工作原理)
JAVA 源文件后缀名必须为.java 字节码文件后缀名为 .class 1-编译器——使用javac将源码变为.class(字节码)——编译运行静态错误 2.解释器——使用java将字节码在虚拟机JVM上运行——解释运行动态错误
6、编译器和编辑器
编译器 ——就是将源码编译为计算机能执行的代码 (eclipse , NetBeans , 企业使用 Intelli J IDEA——学习J2EE使用),kotlin是开发安卓手机的语言
编辑器(IDE:集成开发环境)——就是为了提高开发效率的一个集成开发环境 (NetBean clang g++ gcc) JAVA集成开发环境都将JDK作为系统的核心
三、JAVA代码结构
1、代码块
一个大括号{}陈为一个代码块
2、public class
一个文件只有一个public class
3、字节码
联合编译——每一个类生成一个字节码 .class文件
4、命名规则
项目名字:小写 public class 首字母大写与项目名相同
5、输出打印:System.out.println("");
6、键盘输入:Scanner
工具包:import java.util.Scanner;
Scanner sc = new Scanner(System.in); int n = sc.nextInt();
7、随机函数random()
(1)、Math.max( x , y )函数可以替换 x > y ? x : y
(2)、random()随机函数
设计x到y区间的随机数方法: int x=int(Math.random()*(大数-小数))+小数
四、JAVA语言基础
1、位运算
位运算就是二进制进行计算效率很高按位非 按位与 按位或 按位异或 ^ 右移 左移
2、标识符
下划线、字母、$开头
3、数据类型
(1)、数据类型转换 x+""+y String.valueoOf(x) 陷阱:当x='a' y=2时 x = x+y(此处是错误的,类型不同)
x +=y是可以的,因为该等式已经包含了类型转换
(2)、原生数据类型
int double float等
(3)、引用数据类型
引用数据类型:不知道数据的大小 str数据类型是引用(str有4个字节大小) str数据类型编译时会预留4个字节的大小,等new计算后创建合适的空间大小,然后把该新建的空间地址写入str预留的空间里面
new:计算数据类型的大小,凡是编译器不知道数据大小的就需要使用new——比如数组 int x[ ] = new int [10]
Student stus[]=new Student[20]
stus[0] =new Student(1234,张三)
4、短路操作
前面条件以及可以判断时,后面的不再运行
5、四舍六入
四舍六入五成双 奇数进,偶数舍掉
五、JAVA面向对象
1、一维、二维数组
(1)currentTimeMillis():该函数可以得出评估一段代码的时间,该函数可以得出当前时间的毫秒 (2)一维数组 数组拷贝: 浅拷贝 深拷贝 数组排序: sort() for新写法: for(int i : num) 此写法i是值,i相当于是指针,该指针指向num数组。特别的当指向第一个num并输出后,i存的指针重新指向第二个num的值 此方法只能用来输出,不可以用来赋值 (3)二维数组 维数的概念