第79节:Java中一些要点
第79节:Java中一些要点
前言
一些知识点忘了没,可以通过一个点引出什么内容呢?做出自己的思维导图,看看自己到了哪一步了呢
内容
如果有人问jre,jdk,jvm是什么,你怎么回答呢?
jre的英文是java runtime environment ,包含有java虚拟机,库函数,java运行应用程序和applet的要的文件.java 运行环境功能主要有加载代码,校验代码,执行代码.jre是java运行时环境,有jvm和其他一些java核心api,只要有jre就可以运行java程序.jre含jvm,运行java程序需要jre
jdk的英文是java development kit包含jre,编译器和调式器等.jdk是jre的超集.要进行开发java程序需要安装jdk.
jvm是一种规范,是一个虚拟的用于执行字节码的计算机.jvm是负责java字节码解释运行的,jvm实现了跨平台,可移植的功能.
一次编译,随处运行
源程序(.java文件)->java编译器->字节码(.class文件)
jre,java运行环境,类装载器,字节码校验器,解释器.
什么是变量?
变量是用来操作存储空间中的数据的,是代指存储空间,位置一定,存储空间中的数据类型不确定,就有了数据类型,放置的值也不确定.类型可以是基本类型,也可以是引用类型.
变量:局部变量(方法或语句块内部定义的变量),实例变量(方法外部,类的内部定义的变量),静态变量(使用static).
那么讲了java的变量,那么讲究数据类型,在java中,数据类型分为两大类,一为基本数据类型,二位引用数据类型.
数据类型的定义了8种基本数据类型,我们可以分为3类来了解,一种为逻辑类型,一种的文本类型,一种是数值类型:
逻辑类型记住是boolean就行,文本类型记住是char类型就行,而数值类型记住顺序一下子就可以记住,byte,short,int,long,foloat,double,从小到大的顺序.
类型类型分基本数据类型和引用数据类型
基本数据类型分,数值型,字符型,布尔型.
数值型分,整数类型和浮点类型.那么整数类型有byte,short,int,long,浮点类型有float,double.
float为单精度类型,double为双精度类型.
字符型的有char. 布尔型的有boolean.
boolean类型有两个值为true和false.用来判断逻辑条件的,一般用于程序流程控制.
字符型,单引号用来表示字符类型的常量,'a'为一个字符.char类型可以在unicode编码表中的 字符.char可以用来整数运算.
引用数据类型分,类class,接口interface,数组
注意:引用类型指的就是对象的地址
类型 | 占用存储空间 | 表数范围 |
---|---|---|
byte |
1字节 | -128到127 |
short |
2字节 | -215到214 |
int |
4字节 | 略 |
long |
8字节 | 略 |
float |
4字节 | 略 |
double |
8字节 | 略 |
进制数
十进制整数,八进制整数(以 0 开头),十六进制数(以0x 或 0X 开头).
字符集
iso8859-1->big5,gb2312,unicode gb2312->gbk
方法:定义类和对象的动态行为特征的抽象
运算符
算术运算符: +,-,*,/,%,++,--
关系运算符: >,<,>=,<=,==,!= instanceof
逻辑运算符: &&,||,!
位运算符: &,|,^,~ , >>,<<,>>>
面向对象和面向过程
面向过程的思维模式是比较简单的线性思维.
面向对象的思维模式适合处理复杂的问题.
构造器用于构造类的实例.
构造器的作用就是初始化一些数据.
static
用static声明的成员变量为静态成员变量,用static声明的方法为静态方法.
内存
栈:局部变量放在栈中,栈是一种连续的内存空间,由系统分配.
堆:通过new的对象都在,是不连续的内存空间,速度慢.
方法区:用来存放程序中不变和唯一的内容,方法区也是堆,用于存放类的代码信息,static变量,和常量池.
// 常量池
public class Student {
String name;
int age;
public void study(){
System.out.println("学习");
}
public void sayHello(String sname){
System.out.println("大帅哥");
}
}
public class Test{
public static void main(String[] args){
// 类加载器Class Loader
// 堆中创建一个student对象
Student s1 = new Student();
// 创建字符串常量,放入常量池中
s1.name = "大帅哥";
// 通过s1找到student对象
s1.study();
}
}
小结
栈自动分配连续的内存空间,后进先出,放入的都是局部变量,堆是不连续的内存空间,不像栈按照子弹夹一样,方法区也是堆,里面存放的都是类的代码信息,static 变量和常量池.
抽象方法
抽象方法用abstract修饰,没有方法体,需要用子类来重写
记住:抽象类不能进行实例化,抽象类可以有属性,方法和构造方法,但构造方法不能用new实例,需要用来被子类调用的.抽象类是用来被继承的,抽象方法必须由子类实现.
定义接口:
格式:
public或默认 interface 接口名 extends (接口可以多)
{
public static final 常量
public abstract 方法
}
内部类
一个类放在另一个类的内部定义为内部类.
内部类用来干嘛的?
提供更好的封装,让外部类直接进行访问,内部类可以访问外部类的私有属性.而外部类不能访问内部类的内部属性.
内部类分:匿名内部类,成员内部类,非静态内部类
非静态内部类可以使用外部类的成员,而外部类不能访问非静态内部类的成员
静态成员不能访问非静态成员
new InnerClass()
Outer.inner name = OuterObject.new Inner()
this.变量名
外部类名.this.变量名
访问修饰符:
private在同一个类中
default在同一个类中,在同一个包中
protected在同一个类中,在同一个包中,在子类中
public 公共都可以
多态
指不同类的对象对同一件事情进行不同的效果反应
abstract class Student{
public abstract void study();
}
// 1
class Student1 extends Student {
@Override
public void study(){
System.out.println("学习1");
}
}
class Student2 extends Student {
@Override
public void study(){
System.out.println("学习2");
}
}
多态的特点:
继承,有方法的重写,父类引用指向子类对象引用
基本数据类型的包装类
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
StringBuilder 与 StringBuffer 区别
StringBuilder 可变字符串,线程不太安全,效率高
StringBuffer 可变字符串,线程安全,效率低
String 不可变字符串,final修饰了string类,所以不能被继承,修饰了char value[],所以字符串的值不可以改变,记住final没有修饰string的引用,就会存在内存空间的浪费.
string
String name = "大哥";
io流
io流的分类为输入流和输出流
按数据分
字节流是按照二进制,字符流是按照文本文件.
字节流:
输入流 InputStream
read(byte[] b)
read(byte[] b, int off, int len)
FileInputStream()
InputStream FileInputStream
输出流:OutputStream
write(byte[] b)
write(byte[] b, int off, int len)
FileOutputStream
OutputStream FileOutputStream
字符流
输入流 Reader
read(char[] c)
read(char[] c, int off, int len)
FileReader()
Reader FileReader
输出流 Writer
write(char[] c)
write(char[] c, int off, int len)
FileWriter()
Writer FileWriter
处理流
缓冲流
字节缓冲流
BufferedInputStream
BufferedOutputStream
字符缓冲流
BufferedReader
BufferedWriter
输入流:InputStream
输出流:OutputStream
字节流搞定一切
BufferedInputStream -> FileInputStream -> File
BufferedOutputStream -> FileOutputStream -> File
通过解码
InputStreamReader
OutputStreamWriter
通过解码变字符流,只能处理纯文本
BufferedReader -> FileReader -> File
BufferedWriter -> FileWriter -> File
Reader Writer
线程
Thread
sleep()
yield()
stop()
start()
interrpet()
...
结言
一些你需要重新复习的一些基础内容,写出自己的思维导图看看哦!
达叔小生:往后余生,唯独有你
You and me, we are family !
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生
https://www.jianshu.com/u/c785ece603d1
结语
- 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
- 小礼物走一走 or 点赞
第79节:Java中一些要点的更多相关文章
- JAVA 中LinkedHashMap要点记录
JAVA 中LinkedHashMap要点记录 构造函数中可能出现的几个参数说明如下: 1.initialCapacity 初始容量大小,使用无参构造方法时,此值默认是16 2.loadFactor ...
- 第83节:Java中的学生管理系统分页功能
第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...
- 第82节:Java中的学生管理系统
第82节:Java中的学生管理系统 学生管理系统的删除功能 删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet ...
- 第80节:Java中的MVC设计模式
第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...
- 第78节:Java中的网络编程(上)
第78节:Java中的网络编程(上) 前言 网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节. 网络编程 OSI开放系统互连 网络编程指IO加网络 TCP/IP模型: ...
- 第77节:Java中的事务和数据库连接池和DBUtiles
第77节:Java中的事务和数据库连接池和DBUtiles 前言 看哭你,字数:8803,承蒙关照,谢谢朋友点赞! 事务 Transaction事务,什么是事务,事务是包含一组操作,这组操作里面包含许 ...
- 第76节:Java中的基础知识
第76节:Java中的基础知识 设置环境,安装操作系统,安装备份,就是镜像,jdk配置环境,eclipse下载解压即可使用,下载tomcat 折佣动态代理解决网站的字符集编码问题 使用request. ...
- 第71节:Java中HTTP和Servlet
第71节:Java中HTTP和Servlet 前言 哭着也要看完!!!字数: 学习xml和TomCat 会写xml,看懂xml 解析对象 SAXReader reader = new SAXReade ...
- 第70节:Java中xml和tomcat
第70节:Java中xml和tomcat 前言: 哭着也要看完,字数: jdbc crud - statement dao java.sql.Driver The interface that eve ...
随机推荐
- 防止网页被别人的网站iframe,服务端如何设置HTTP头部中的X-Frame-Options信息?
一.现象:in a frame because it set 'X-Frame-Options' to 'deny'. 二.服务配置 因为,有时候为了防止网页被别人的网站iframe,我们可以通过在服 ...
- 人脸识别1:n对比 (二)
本项目采用了百度AI 人脸识别 第三方接口,实现了自选本地手机相册图片上传人脸(faceSet中添加人脸) 和 自选本地手机相册图片寻找出集合中相似度最高的一个face,可返回比对相似度.位置等信息. ...
- Python中的 __name__有什么作用?最详细解读
案例说明: Python中的模块(.py文件)在创建之初会自动加载一些内建变量,__name__就是其中之一.Python模块中通常会定义很多变量和函数,这些变量和函数相当于模块中的一个功能,模块被导 ...
- Cordova配置与WebApp混合开发环境配置
好久都没来更新随笔了,这阵子比较忙,不过还是在不断的学习当中,今天给大家分享一下Cordova的配置与搭建WebApp混合开发环境的配置. 准备好了吗?让我们一步步来咯!!! 1.配置JDK环境 用的 ...
- 递归打印lua中的table
在lua中,table是比较常用的数据形式,有时候为了打印出里面的内容,需要做一些特殊处理. 废话不多讲,直接粘代码: print = release_print -- 递归打印table local ...
- 将n个东西分成n1,n2,n3,n4,....nr 共 r组分给r个人有多少种分法。
(n!/(n1! *n2! *n3!..nr!) ) * r!/( 同数量组A的数量! 同数量组B的数量!....) 比方20个东西分成2,2,,2,2 3,3,3,3 8组分给8个人有多少种 ...
- 信息安全技能树(SecWiki中Web安全工程师职位建议)
职位描述: 对公司网站.业务系统进行安全评估测试(黑盒.白盒测试): 对公司各类系统进行安全加固: 对公司安全事件进行响应,清理后门,根据日志分析攻击途径: 安全技术研究,包括安全防范技术,黑客技术等 ...
- JAVA EE:第一个例子(登录)
名称 代码 说明 web.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xm ...
- one-to-one 一对一映射关系(转 wq群)
2.配置对应的xml配置文件 person的配置文件 idCard的配置文件 idCard的配置文件 3.测试 运行测试程序后,控制台输出两条语句
- C语言常识
struct tree{ struct tree *left; struct tree *right; }; typedef struct tree newtree; int main(int arg ...