javaSE基础大全--知识点总结
J2SE
1、Java简介
Java是SUN公司开发,后来被oracle收购。
Java之父,詹姆斯高斯林。
2、Java不同版本
J2SE:Java标准版
J2EE:Java企业版
J2ME:Java嵌入式
J2ME(Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境;
J2SE(Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境;
J2EE(Java 2Enterprise Edition,Java 2平台的企业版)
3、Java的特点
重点讲5个:可移植 面向对象 垃圾自动回收(GC) 鲁棒性 简单性
4、什么是JDK
JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。
5、安装JDK
打开cmd,输入java回车,看是否输出Java相关信息,在输入javac,看是否输出Java相关信息,如果两次都输出,那么说明配置正确。
6、第一个程序
public class HelloWorld{public static void main(String[] args){System.out.println("Hello World !");}}
4、在dos命令中写javac HelloWorld.java。是编译我们刚写好的代码。
5、在dos命令中写java HelloWorld,注意不要有.class或者.java,只有文件名。
7、Java程序运行原理
2、通过Java编译源文件,生成字节码文件(.class文件)
3、字节码文件运行在Java虚拟机上,Java虚拟机运行在操作系统上,这样就实现了一次编译到处运行的可移植性。
8、JDK
9、JRE
JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
10、JVM
JVM是Java Virtual Machine(Java虚拟机)完成加载、校验和执行三项任务
11、eclipse配置
快速生成get/set方法:alt+shift+s,选择getter and setter
12、注释
注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。
注释就是跟人看话,不是给计算机看的。正式的代码是给计算机看的,注释中的东西不会被编译,不会影响程序。为了让维护这段代码获调用这段代码的人,更方便。
13、标识符、关键字
标示符(IDentifier)是指用来标识某个实体的一个符号。在不同的应用环境下有不同的含义。
关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。
14、变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。
15、数据类型
1、整型
整型就是可以存储整数的数据类型,Java中所有的整型都分正负。整型直接运算一定得到整型。
整型在做运算时会被默认作为int数据类型运算,所以btye、short在运算时,注意,如果和整型常量运算,会被转化成int。
s1 = s1 + 1会报错,因为被默认转化成int运算了。
s1 += 1;这种写法不会报错,拓展运算符可以免去数据类型转换的问题。
1、byte
2、short
3、int(重点记忆)
取值范围:负2的31次方~2的31次方-1 2147483647
4、long
如果确认是long数据类型,那么在声明时一定要加一个L(可以用小写的l,但是建议用大写,因为小写和1比较相似,容易认错)
2、浮点型
因为0到1之间有无数多个小数,所以我们没有办法用有限的空间存储无限多的数。小数在计算机中都是以近似值存储。所以浮点型是有一个精度范围的。
浮点型中,double是默认的数据类型,float只有在数据后加一个f(F)才表示这是一个float数据类型。
1、float
单精度浮点型,精度是7位(一共7位,包括整数部分和小数部分)
2、double(常用的存储小数的数据类型)
双精度浮点型,精度是15(一共15位,包括整数部分和小数部分)
3、字符型
1、char
4、布尔型
1、boolean
表示真假的数据类型,只有两个值:true(真)、false(假)
5、数据类型转换
byte à short à int à long à float à double
16、运算符
2)逻辑运算符==》&,|,!和 &&,|| ,重点讲解 & 和&&的区别
(&&)如果第一个表达式是false,那么运算结果就是false,第二个表达式没有必要一定运行,这被称为短路。
(&)要将两个表达式计算结束之后,才会返回结果,也就是无论第一个表达式是什么结果,第二个表达式都会运行。
7)三目运算符==》 布尔表达式 ?值1:值2 重点讲解 好处
如果布尔表达式为true,那么执行值1,如果是false,那么执行值2
public class Text {public static void main(String[] args) {int a = 5;int b = 7;/** 00000101* 00000111* | 00000111* & 00000101*/System.out.println(a | b);System.out.println(a & b);System.out.println(1 + 2 + "a" + "b" + 5 + 3);System.out.println(1 + 2 + "a" + "b" + (5 + 3));/** 当执行到a时会转换成字符串运算,结果是3ab53* 但是如果在加了一个括号,5+3就不会转换成字符串运算,结果3ab8**/}}
17、分支语句
1、if
if语句中的表达式,必须是一个boolean类型的数据,或者是一个通过运算可以得到boolean类型数据的表达式。
2、if else
如果表达式为true,执行if中的代码,如果为false,执行else中的代码。
3、if else if else if …..else
4、switch
1、表达式是的值会依次和case中的表达式1、表达式2比较,如果相等,则执行对应后面的语句,都不相等会执行default中的语句。
2、switch有穿透性,如果表达式和表达式1相同,执行语句1后,会继续执行语句2,所以如果不希望穿透,那么用break打断。
表达式是一个在运算时被转化成int数据类型运算的数据数据类型。
18、命名规范
19、循环语句
1、for
2、通过表达式2的结果判断是否执行循环体内容。如果表达式2返回为true,则执行循环体中内容,如果表达式2返回false,则跳出循环,程序继续向下执行。
2、while
3、do while
4、注意:do while循环,while括号后一定要有一个分号(;),没有报错
4、break
5、continue
让程序继续向下执行,如果程序执行到continue,那么将程序下面的语句跳过,使程序进入下一次循环。
6、注意事项
20、数组
1、什么是数组
2、定义数组
1、用数组中每个元素数据类型声明一个数组,数据类型名[] 变量名
a[n]取的是第n+1位置的数据,计算机中所有集合的开始都是从0开始的。
int[] b = {0,1,2,3,4,5,6,7,8,9,10};for(int i = 0; i < b.length; i++){for(int j = i + 1; j < b.length; j++){if(b[i] < b[j]){int temp = b[i];b[i] = b[j];b[j] = temp;}}for(int k = 0; k < b.length; k++){System.out.print(b[k] + " ");}System.out.println();}
多维数组定义:int[][] a = new int[长度1][长度2];
21、main方法
main方法是主程序的入口,程序从main方法的第一行开始执行,一直执行到最后一行结束。
22、面向对象
1、什么是面向对象
我要先造一辆汽车,再造一个宇宙、再造一个地球,再造一个新疆,然后开车去新疆。
汽车不用我造,新疆也不用我造,我只要会开车,知道新疆在哪就可以过去。
我到饭店,然后找到饭店里的鸡蛋,没有出去买,没有买的,需要找一只鸡生鸡蛋,没有鸡,我要找鸡蛋,孵出一只鸡,没单。。。。进入死循环
2、应用面向对象
创建一个类:右键new à class à给class赋一个名字
权限修饰符 (其他修饰符)返回值数据类型(如果有,那么写这个类型,没有写void) 方法名(参数){
参数:需要就写,不需要就不写。数据类型 形式参数名(见23.3.3)
3、面向对象三大特征
23、成员变量和局部变量
1、成员变量
2、局部变量
3、注意事项
1、作用域
成员变量作用域是整个类,局部变量是离他最近的一对闭合大括号之间
2、初始化值
3、形式参数和实际参数
形式参数改变的值是传递过来赋值给参数的值,也就是说改变的事形式参数的值,实际参数不会发生变化。
修改形式参数的值会同时改变实际参数的值。Sting和基础数据类型的封装类是一个特殊的,和基础数据类型处理这个问题的方式相同。
24、构造函数
1、构造函数
如果类中没有构造方法,Java会帮助我们加一个默认的构造方法,默认的构造方法是一个没有参数的构造方法。
3、如果自定义了构造函数,并且有参数,那么无参的构造函数将被取消。
2、方法重载
在一个类(有继承关系的是方法的重写)中允许出现多个相同名字的方法,但是必须满足方法重载的要求。
25、this关键字
this关键字表示的是当前这个类,我们可以通过this调用类的属性和方法,如果出现形参和属性变量名相同时,要用this.属性名才可以调用到属性。
26、对象的初始化顺序
27、static关键字
static表示静态,static可以修饰属性、方法、类、代码块
静态变量:static修饰的变量就是静态变量,静态变量又叫类的属性,如果这个类的任何一个对象修改了这个属性值,那么这个类的所有对象属性值都会发生变化。
28、package
1、创建包
是包的意思,包对应文件管理器就是文件夹的意思。包可以帮助我们更好的管理代码,实现项目的拓展性。
2、引用包
如果要用其他包中的类,需要通过关键字import引入这个包。
也可以用import org.jsoft.vo.*;但是这种写法比较少见,因为要索引具体类,快捷键不会提示。
29、继承
1、什么是继承
2、特点
父类中的属性和方法,在子类中都可以用(权限修饰允许的前提下)
3、方法的重写
4、JavaBean
30、访问权限
public多数用于修饰方法,private多数用于修饰属性。
protected一般在写底层代码时用的比较多,没有修饰符的用的是最少的,很少使用。
31、多态
1、Object
2、特征
类与类要有继承关系才能体现多态,人和男人有继承关系,人和石头
如果没有方法重写,那么不需要多态,直接调用方法即可,所以要用多态就要有方法重写。
3、优点
32、封装
所有属性全部都是private修饰,给属性添加get/set方法。封装属性。
把重复使用的代码作为一个方法封装起来,这如果要改逻辑,只需要修改封装好的方法即可,不需要到处修改,这样提高了代码的维护性和可读性。
33、final
修饰属性不能修改值,第一次赋值以后都不允许改变。不能改变,指的是引用不能变,但是对象的属性可以改变。
34、抽象类
1、语法
2、应用场景
当需要统一调用一个方法时,每个子类对于这个方法的具体实现都不同,我们可以通过抽象出抽象类解决这个问题,具体方法实现交给子类实现,父类(抽象类)中统一调用。
35、接口
接口中只能有方法的声明,不能有方法的实现(即不能被new)。
接口中的方法都是抽象方法,都是public权限修饰,abstract和public关键字可以省略不写,JDK会帮助我们添加。
36、代码块
静态代码块>构造代码块>构造方法,其中静态代码块只在第一初始化时执行,以后不再执行。
37、内部类
其中IA是一个接口,接口是不可以被实现,但是上面的写是写了一个匿名内部类,这个匿名内部类是一个实现了IA接口的类
38、常用类
1、Math
random:生成随机数,范围是0.0~1.0,不包含1.0
2、Object
Object是所有类的超类,Java中所有类默认继承Object
如果需要有特殊情况判断两个对象是否相同,那么我们可以重写equals方法
如果输出对象时要有特殊的格式,那么我们可以重写toString方法
super.toString()调用的是父类的toString方法。
3、String
endWith(Stirng):是否是String结尾的字符串
equals(Object):判断两个字符串是否内容相同,注意参数类型是Object数据类型。
equalsIgnoceCase(String):判断两个字符串不区分大小写内容是否相同。
indexOf(String):返回String在字符串中第一次出现索引的位置。如果不包含,返回-1
replaceAll(String1,String2):将字符串中所有的String1替换成String2,注意替换后的字符串以返回值返回,不会修改String1。
split(String):按照String拆分字符串,返回一个字符串数组。注意这个字符串是正则表达式。
substring(int1, int2):截取字符串,从int1开始,到int2-1中间的所有字符串。注意int2不要超过字符串长度,不要小于int1。
4、StringBuffer
String对象地址会发生变化,StringBuffer地址不会发生变化。
当修改字符串内容,String会按照Java的字符串机制,创建新的对象,修改字符串的地址。StringBuffer不会按照String的机制,会在原地址基础修改字符串内容。
StringBuffer最后一般都会转换成String数据类型操作,通过toString方法可以将StringBuffer转换成String。
5、Date
Date是Java中表示时间的对象,有多个构造方法,其中无参的构造方法和参数是long的构造方法用的最多,无参表示当前时间,long参数表示1970.1.1 00:00:00到现在的毫秒数。
39、异常
异常是程序中出现的问题,有些异常需要特殊处理,有些异常可以不做。
1、一个图
2、五个关键字
try、catch、finally、throw、throws
try代码块中的代码执行,如果发生异常,那么会进入catch代码块,最后一定会执行finally代码块,如果try代码块中没有异常,那么最后也一定会执行finally代码块
40、集合
Collection,List,Set,Map,Iterator
1、List
LinkedList因为是链表实现,所以插入和删除快,遍历慢。
2、封装类
3、Map
是以键值对形式存储的,有键(Key),值(Value),通过key得到value。
put(Object1,Object2):存值,key是Object1,value是Object2,可以通过Object1获得Object2的值。
get(Object):通过Object找到对应的value
1、key唯一,如果有相同的key存放,那么后存放的value值会覆盖先存放的value
4、Iterator
5、Set
是一个继承了Collection接口的集合,他和List是兄弟关系,和Map没有关系。
41、I/O流
1、流的分类
2、File
File是文件类,他表示物理路径下的文件和程序中对象的关联,处理文件以为,他还可以关联文件夹。
3、文件输入输出流
4、高级流
大多数是带有Buffered修饰的流,这个是带有缓冲区的流,提供了一些更方便的方法。
public static void main(String[] args) {Reader reader = null;BufferedReader br = null;BufferedWriter bw = null;Writer writer = null;try {reader = new FileReader(new File("D:\\FTP\\50y\\HelloWorld.java"));writer = new FileWriter(new File("D:\\FTP\\50y\\Hello.java"));br = new BufferedReader(reader);bw = new BufferedWriter(writer);String str = "";while(true){String s = br.readLine();if(s != null){str += s + "\n";System.out.println(s);}else{break;}}bw.write(str);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if(br != null){try {br.close();} catch (IOException e) {e.printStackTrace();}}if(reader != null){try {reader.close();} catch (IOException e) {e.printStackTrace();}}if(bw != null){try {bw.close();} catch (IOException e) {e.printStackTrace();}}if(writer != null){try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}
1、创建高级流是需要节点流,所以我们要先创建节点流再创建高级流
3、缓冲输出流再写完文件时,一定要关闭,否则可能导致文件不完整
42、1.5新特性
1、自动解包
基础数据类型都有封装类,如果在1.5之前,封装类和基础数据类型不能直接转换,需要特殊的方法,1.5之后,可以自己打包和解包。
2、增强for循环
缺点:没有原始在集合中位置的临时变量,也就是数组的下角标,如果需要,那么还是要用传统for循环
从sArr中取得第一个元素,赋值给临时变量s,然后执行循环体,再次进入循环时,又把下一个元素赋值给临时变量s。。。。。。最后没有下一个临时变量,跳出循环。
3、可变参数
3、方法中可以正常声明其他参数,这些参数的数据类型和可变参数的数据类型没有关系
5、用到可变参数时,一定要判断可变参数是否为空,是否长度为0
4、泛型
在Java中如果一个类中的数据类型根据实际情况会发生变化,那么我们可以用泛型来解决这个问题。
2、泛型是相对于对象的,类知识对象的模板,泛型根据创建对象传入的决定
3、在类中,泛型会替换类型所有用到的地方(所有的E会被替换成String)
4、泛型如果不传,没有语法错误,只会出现警告,然后泛型会被默认成Object
5、枚举
枚举我们可以对照boolean来记忆,boolean只有两个值true/false,枚举只有几个值,具体有几个值由我们自己定义。
2、上图是重写了枚举的构造方法,如果不需要,只定义枚举值即可。
43、数据库
1、什么是数据库
2、增删改查SQL
INSERT INTO book(name,price,id) VALUES ('Java从入门到精通', 100, 7);
UPDATE book SET name='Java从入门到放弃', price=200 WHERE id=7;
SELECT * FROM book WHERE id=2;
3、添加jar
javaSE基础大全--知识点总结相关推荐
- javaSE基础重点知识点总结 持续更新
javaSE基础重点知识点解析 文章目录 javaSE基础重点知识点解析 前言 1.重载和重写 2.匿名对象 3.可变个数形参的方法 4.MVC设计模式 5.java.lang.Object类 6.自 ...
- javaSE基础04
javaSE基础04 一.三木运算符 <表达式1> ? <表达式2> : <表达式3> "?"运算符的含义是: 先求表达式1的值, 如果为真, ...
- 【JavaSE基础】学会区分和使用重载和重写
⭐️引言⭐️ 大家好,我是执梗,我致力于写从Java基础开始向JavaEE进阶的Java知识,也会涉及到一些算法知识,有兴趣的伙伴可以一起关注交流,欢迎阅读我的JavaSE基础系列.今天为了大家讲解J ...
- JavaSE基础知识(五)--面向对象代码实现初步(实现一个简单的类类型代码)
Java SE 是什么,包括哪些内容(五)? 本文内容参考自Java8标准 一.面向对象(代码实现): 首先,在这里我需要说明一个根本性的问题:实际上,面向对象编程包括了两部分,一个是你的编程思想,一 ...
- JAVA-SE基础篇-非静态内部类
JAVA-SE基础篇-非静态内部类 /*** 非静态内部类* 知识点* 1. 非静态内部类 BattleScore "战斗成绩"* 非静态内部类可以直接在一个类里面定义* 比如:* ...
- 黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结
黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日 day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合 ...
- javase基础socket编程之局域网聊天,局域网文件共享
2017年06月04日 23点25分 javase基础学完可以做什么,javase实现局域网聊天室 包含内容:基础语法,面向对象,多线程,IO流,GUI编程,网络编程(udp) 实现功能:局域网群聊 ...
- js中当等于最小值是让代码不执行_JavaScript中最最基础的知识点
JavaScript 中有很多很常用的也很基础的知识点需要我们牢牢记住,倒背如流,这样在开发的时候才能得心应手. 本文主要总结了DOM,Array,String,Math的一些常用方法,还有一些JS编 ...
- 这些Java基础面试知识点,你都掌握了吗?
想了解一下学Java的小伙伴们,在学习Java的时候有没有去总结知识点,哪些知识点我们没有掌握,哪些知识点是我们还没有掌握的,今天小编来发掘一些Java基础面试知识点,不知道大家掌握没有. 小编分享的 ...
- 全国计算机二级公共知识点,全国计算机二级公共基础知识知识点
全国计算机二级公共基础知识知识点 公共基础知识 第一章 数据结构与算法 1.1 算法 1.1.1 算法的基本概念 1.算法的基本特征 可行性.确定性.有穷性.拥有足够的情报 所谓算法,是一组严谨地定义 ...
最新文章
- Python 技术篇-用flask服务实现mac本地文件上传至windows服务器指定文件夹下实例演示
- ios打包报错:User interaction is not allowed
- 全国计算机一级计算机基础及WPS考试题型,计算机一级考试科目有哪些?Wps和ms考试的题目一样吗?...
- python返回菜单_返回上一菜单
- onclick的值传给php,php – 从onclick事件将HTML属性传递给jQuery函数
- linux mysql 数据类型_MySQL的数据类型和建库策略(转)
- 02-C#入门(枚举、结构等)
- 7-110 自动售货机 (30 分)
- ise许可证怎么解决_ISE 2.4升级警报:安装的少量VM许可证比配置的VM节点
- Android 开 发 资 源 分 享
- C#数据库教程2-ADO.NET常用SQL语句
- struts2 国际化 中文乱码英文不乱码问题
- 安卓和iOS的兼容性问题: 键盘弹起时,固定在底部的按钮是否被弹到键盘上方
- 高考志愿填报平台数据加密(js逆向)
- macOS conda 安装指定版本的 Pytorch
- 基于MATLAB人脸面部检测的口罩识别系统
- 算法工程师(机器学习/深度学习)Offer的准备流程
- 【绘图杂记16】Echarts 热力矩阵图
- 「数据集」深度学习从“数据集”开始
- MFC 加载jpg等图片
热门文章
- linux 飞信机器人 下载,飞信机器人FXRobot 's | CN-SEC 中文网
- phalapi做登录检测_欢迎使用PhalApi!
- 微信公众平台接入token验证失败php,PHP开发公众号token验证失败是什么意思?其中一个原因 筋斗云网络...
- cannot import name ‘_validate_lengths的解决办法
- Delphi中三种延时方法
- 在word中如何制作问卷调查?原来是使用word控件技巧!
- photoshop cs6用户界面字体太小的解决方案
- Unity3d C#实现语音合成(TTS)试听并选择路径保存下载功能(含源码)
- c语言挂科 合工大,合工大计算机学院程序设计01程序设计与C语言初步.ppt
- Promethus(普罗米修斯)监控