java笔记

计算机语言演变
机器语言–汇编语言–高级语言
JDK -Java Development kit Java开发工具包
JRE -Java Runtime Environment Java运行时环境
JVM -Java Virtual Machine Java虚拟机
JDK>JRE>JVM
JVM是一种规范,就是一个虚拟的用于执行bytecodes字节码的计算机
javac: 编译命令 ,java :执行命令

1. 标识符
作用:给变量、类和方法命名
java标识符有如下命名规则:
–标识符必须以字母下划线_、美元符“$“开头
–标识符其它部分可以是字母、下划线、美元符 和数字的任意组合
–Java标识符大小写敏感,且长度无限制
–不可以是是Java的关键字
注:
–Java不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准国际字符集

数据类型
Java是一种强类型语言,每个变量都必须声明其类型
基本数据类型
数值型:
整数类型(byte,short,int ,long)
浮点类型(float,double)
字符型(char)
布尔类型(boolean)
引用数据类型
类(class)
接口(interface)
数组
类型转换:
byte->short->char -->int ->long ->float ->double

Java语言支持如下运算符
算术运算符:+,-,,/,%,++,–;
赋值运算符:=
关系运算符:>,<,>=,<=,==,!= ,instanceof
逻辑运算符:&&,||,!
位运算符:&,|,^,~,>>,<<,>>>
条件运算符:?
扩展赋值运算符:+=,-=,
=,/=

形参: 在方法被调用时用于接收外界输入的数据
**实参:**调用方法时实际传给方法的数据
JAVA中只有值传递没有引用传递
对象和类的概念
–以类的方式组织代码,以对象的方式组织(封装)数据
对象:是具体的事务
类:是对对象的抽象
先有具体的对象,然后抽象各个对象之间的部分,归纳出类通过类再认识其它对象
类可以看成一类对象的模板,对象可以看成该类的一个具体实例
对象是Java程序的核心,在Java程序中‘万事万物皆对象’
成员变量 如果不初始化 ,系统会默认初始化,局部变量一定要初始化
内存分析
栈:自动分配连续的空间,后进先出 一般放局部变量
堆:不连续,放置new 出的对象
方法区(堆):类的信息(代码),static 变量,常量池(字符串常量)等
方法重载
方法重载是指一个类中可以定义有相同的名字,但参数不同的方法,调用时,会根据不同的参数选择对应的方法
多态的条件
要有继承,要有方法重写,父类引用指向子类对象
接口里只有常量和抽象方法
内部类
一般情况,我们把类定义成独立的单元,有些情况下,我们把一个类放在另一个类的内部定义,称为内部类
内部类的作用:
1.内部类提供了更好的封装,只能让外部类直接访问,不允许同一个包中的其他类直接访问
2.内部类可以直接访问外部类的私有属性,内部类被当成其他外部类的成员。但外部类不能访问内部类的内部属性
内部类使用场合:
由于内部类提供了更好的封装特性,并且可以很方便的访问外部类的属性。所以,通常内部类在只为所在外部类提供服务的情况下优先使用

Collection容器 与数组的区别
1.数组的容量是有限制的,而collection是没有这样的限制,它的容量可以自动的调节
2.collection只能用来存放对象,而数组没有这样的限制
常见的五种单例模式实现方式
主要:1.饿汉式(线程安全,调用效率高,但是,不能延时加载)
2.懒汉式(线程安全,调用效率高。但是,可以延时加载)
其它:
3. 双重检测锁式(由于JVM底层内部模型原因,偶尔会出现问题,不建议用)
4.静态内部类式(线程安全,调用效率高。但是,可以延时加载)
5.枚举 式(线程安全,调用效率高,不能延时加载,并且可以天然的防止反射和反序列化漏洞)

设计模式
创建型模式:都是用来帮助我们创建对象的
单例模式
保证一个类只有一个实例,并且提供一个访问该实例的全局访问点
工厂模式
简单工厂模式: 用来生成同一等级结构中的任意产品(对于增加新的产品,需要修改已有代码)
工厂方法模式:用来生成同一等级结构中的固定产品(支持增加任意产品)
抽象工厂模式:用来生产不同产品组的全部产品(对于增加新的产品,无能为力;支持增加产品族)
建造者模式
分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象
原型模式
通过new产出一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式
**Mysql **
索引:提高检索性能
请求中文乱码解决
1.使用String进行数据重新编码
name=new String(name.getBytes("ios8859-1),“utf-8”)
2.使用公共配置
get方式
步骤一:req.setCharcterEncoding(“utf-8”);
步骤二:在tomcat的目录下conf目录下修改server.xml文件:在Connector标签中增加属性useBodyEncodingForURI=“true”
post方式:
req.setCharcterEncoding(“utf-8”);
请求转发
一次请求,浏览器地址栏信息不改变
req.getRequestDispatcher(“要转发的地址”).forward(req,resp);
重定向:
解决了表单重复提交的问题,以及当前servlet无法处理的请求的问题
resp.sendRedirect(String uri)
两次请求,两个request对象,浏览器地址栏信息改变
request作用域:
解决了一次请求内的servlet的数据共享问题
Cookie:
解决了发送的不同请求的数据共享问题
JAVA线程同步方式
1.同步代码块 2.同步方法 3.同步锁 4.Volatitle变量 5.ThreadLocal类 6.阻塞队列 7.原子类
类加载器
1.引导类加载器 2.扩展类加载器 3.系统类加载器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值