Java 中的内部类有什么用?

什么是内部类 把类定义在另一个类的内部,该类就被称为内部类. 非常重要的一点是,内部类能够访问外部类的所有成员,包括private修饰的. 为什么需要内部类 Java的内部类让我很容易的想起来JavaScript的闭包,闭包就是定义在一个函数内部的函数——这听起来和Java的内部类定义一样一样的. 本质上,闭包是将函数内部与函数外部连接起来的桥梁. 内部类一样,它是将内部类与外部类连接起来的桥梁. 内部类有何优势 内部类可以直接访问外部类中的成员(包括私有成员), 内部类可以独立地继承一个抽象类或者实现一个接口,无论外部类是否也这样做了,对内部类都没有影响. 可以模拟实现多继承 我们知

javascript字符串转化成数字的几种方法

前言 javascript因为他的不完美, 导致了字符串可以有好几种转化为数字的方法, 但是可用的方法越多,留下的坑也就比较多. parseInt 几乎所有浏览器都能解析处理此方法. console.log(parseInt('001一介布衣'); //有些老旧浏览器会返回 0 //现代浏览器会返回 1 此方法优点: ** 处理速度最快** Number Number 几乎所有浏览器都支持解析, 但是它针对参数是否有引号会做出不同的解析. console.log(Number('0028')); 输出:28 console.log(Number(023)); 输出:19 当 Numbe

强大的java 开发IDE idea 2018 mac版 破解版本 百度网盘下载

下载地址 百度网盘链接: https://pan.baidu.com/s/1TvMYmO0BvKE-tr-VMRkyTg 密码: gpot 打开镜像文件 打开dmg镜像文件,将“IntelliJ IDEA”拖入到“Applications”应用文件夹中进行安装; 安装完成不要运行 回到安装镜像文件的界面; 打开“Crack”文件夹,将文件夹目录下的“JetbrainsCrack.jar”复制到软件的安装目录下, mac默认目录为 【Application/IntelliJ IDEA.app/Contents/bin】 编辑idea.vmoptions文件 在【Application/In

mac 安装jdk后 IDEA 配置jdk

下载安装jdk 官网去下载jdk: https://www.oracle.com/index.html 进入官网,按照如下步骤进行下载 本文以jdk11为例 选择下载 mac 版本 双击安装 配置环境变量 查看是否安装成功: java --version 显示如下,表示安装成功. $ java --version java 11.0.3 2019-04-16 LTS Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.3

java 的内置类型

#内置数据类型 java语言提供了八种基本类型; 六种数字类型(四个整数型,两个浮点型); 一种字符类型,还有一种布尔型. byte: byte 数据类型是8位、有符号的,以二进制补码表示的整数; 最小值是 -128(-2^7); 最大值是 127(2^7-1); 默认值是 0; byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一; 例子:byte a = 100,byte b = -50。 short: short 数据类型是 16 位、有符号的以二进制补码表示的整数 最小值是 -32768(-2^15); 最大值是 32767(

java 中的 ArrayList 介绍

什么是 ArrayList ArrayList 类位于 java.util 包中; 是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素; 它继承了 AbstractList ,并实现了 List 接口. 语法格式 import java.util.ArrayList; // 引入 ArrayList 类 ArrayList<E> objectName =new ArrayList<>();  // 初始化 E为泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型 objectName:

java 中 final 关键字的使用

final 保留字概述 final关键字在java中非常重要,它可以应用于类、方法以及变量; final经常和static一起使用来声明常量,你也会看到final是如何改善应用性能的。 final 的含义 final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量; 一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误. final 定义的变量 凡是对成员变量或者本地变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量; final变量经常和static关键字一起使用

java 中 static 关键字的使用方法

static 概述 在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,只要程序在运行,那么这块内存就会一直存在; static 定义的类成员 可以直接访问 在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是用static修饰的成员可以通过类名加“.”进行直接访问. static 独立于类的其他成员 任何实例共享 static修饰的成员变量和成员方法独立于该类的任何对象; 它不依赖类

java.lang.String 类定义的方法

char charAt(int index) 返回给定位置的代码单元。除非对底层的代码单元感兴趣, 否则不需要调用这个 方法。 int codePointAt( int Index) 5.0 返回从给定位置开始的码点。 int offsetByCodePoints(int startlndex, int cpCount) 5.0 返回从 startlndex 代码点开始, 位移 cpCount 后的码点索引。 int compareTo(String other) 按照字典顺序, 如果字符串位于 other 之前, 返回一个负数; 如果字符串位于 other 之 后, 返回一个正数; 如果两

浅谈 java 中的集合类 Collection

java中的集合类Collection Collection是最基本的集合接口; 一个Collection代表一组Object,即Collection的元素; 它是一个接口,是高度抽象出来的集合,它包含了集合的基本操作: 添加、删除、清空、遍历(读取)、是否为空、获取大小等,如下语法. 语法 public interface Collection<E> extends Iterable<E> {} iterator接口 不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中

java 中的枚举类

模拟一个枚举类 日常我们遇到用一个静态类来定义常量 public class Weekday { public static final int SUN = 0; public static final int MON = 1; public static final int TUE = 2; public static final int WED = 3; public static final int THU = 4; public static final int FRI = 5; public static final int

java 中的 String , StringBuffer和StringBuilder的概述说明

定义 String是不可变字符 StringBuffer是可变的字符 StringBuilder也是可变的字符 StringBuffer和StringBuilder的区别 StringBuffer对象是线程安全的,这意味着StringBuffer对象可以同时被多个并行线程修改,因为它所有的方法都被声明为"synchronized(同步)"; StringBuilder类是JDK1.5版引入的非线程安全的类,这意味着它的所有方法都是非同步方法; 因此,在单一模型的应用中,我们应该使用StringBuilder,这样对象不会有锁定和解锁,这样性能就会增加; 如何选择Strin

MAC 环境下 java 开发IDE - IntelliJ IDEA 快捷键

Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ↓ 下箭头 ← 左箭头 → 右箭头 ⇞ Page Up(Fn+↑) ⇟ Page Down(Fn+↓) Home Fn + ← End Fn + → ⇥ 右制表符(Tab键) ⇤ 左制表符(Shift+Tab) ⎋ Escape (Esc) 编辑 Control + Space 基本的代码补全(补全任何类、方法、变量) Control + Shift + Space 智能代码补全(过滤器方法列

java 中的 抽象方法 抽象类 和 接口有啥瓜葛

什么是java中的抽象方法 抽象方法是一种特殊的方法: 它只有声明,而没有具体的实现 例如: abstract void eat(); 上面定义了一个方法 eat() ,有修饰关键词 abstract ,而且只有方法签名,没有方法的具体实现, 这就是一个java中的 抽象方法. 我们可以看到关键词 abstract 前面再没有任何修饰关键词 [ public , protected 或者 private ] 为什么不能有修饰关键词,我们留到下面再讲. 什么是java中的抽象类 一个类含有抽象方法,则称这个类为抽象类 抽象类必须由关键词 abstract 修饰; 我们来看一个抽象类的示例:

java 中的块级作用域

什么是java中的块级作用域 一对大括号括起来的代码区域叫做一个块级作用域; {...} 在块级中定义的变量被称作局部变量; 局部变量的生命周期:从被定义的位置开始,到本块结束. 注意事项 一个块可以嵌套在另一个块中 子块可以访问父块中的变量的 父块不能访问子块的变量 子块不能定义与父块同名的变量 在不嵌套的块中可以定义同名的变量; public class com.yijiebuyi { public static void main(String args[]) { { int k = 1;

[北京] 急聘 java高级架构师,高级开发工程师

文章目录 java架构师 职责 坐标 要求 福利 薪资 Java高级开发 职责 坐标 要求 薪资 Java开发 职责 学历 坐标 要求 福利 薪资 职位已关闭 java架构师 职责 负责设计并参与产品的方案讨论、技术选型、架构设计等环节. 负责产品架构的搭建和实施. 根据行业内最新产品和技术的发展方向,制定产品架构发展战略规划 坐标 北京 - 西二旗城铁 要求 1、有5年以上开发或管理工作经验,3年以上互联网平台或大型网站架构经验; 2、熟悉J2EE和Struts,Hibernate/MyBatis,Spring等开源框架; 3、精通MySQL+Nginx/Ap

java 语法的命名规范

项目名 命名规范 全部小写 如:yijiebuyi , helloworld package 包名命名规范 强烈推荐使用公司或机构的顶级域名为包名的前缀; 包名的前几个为固定名称, 如果是网站的话,采用网站的域名的反写; package 包名全部为小写字母,以符号(. )来分隔, 但是不能包含*号,具有实际的区分意义. 如: com.yijiebuyi.blog //博客系统 com.yijiebuyi.wechat //微信H5服务站 要求 有意义的名词 传达其用途 结合模块名来命名 使用范例 应用系统中经常应用分层,Dao层(数据库访问)、Service层(业务处理)、Web层(页

ES6 新增了哪些新特性 (二)

关于 ES6规范及新特性 对象字面量申明增强 ES6 之前,申明对象字面量方式其实就是直接定义一个json对象.存在的仅仅是对象的属性和值. ES6 之后,对象字面量被扩展支持直接设置原型, 简洁属性赋值和方法, 超类调用, 这也让对象字面量和类声明的关系更密切,并让基于对象的设计更便利 ES6之前: var obj = { __proto__: theProtoObj, // 下面的写法不会设置内部原型 '__proto__': theProtoObj, // 方法 toString() { // 调用父对象的方法 return "d "

ES6 新增了哪些新特性 (一)

ES6是对 javascript 语言的一次重大更新,是自从2009年ES5标准化后的第一次重大更新 主要的JavaScript引擎正在逐步实现这些特性,点击这里查看浏览器的兼容情况 这次更新涉及到的新特性还比较多,我们分几个部分来简单介绍 ES6 中模块导入 类似下面的语法: import fs from 'fs'; import path from 'path'; 这里的 import是在编译时决定的( 即在脚本开始执行之前 ) 事实上,各个模块之间的依赖关系图所涉及的所有imports和exports都是在执行之前已经决定 如果我们的代码中需要按需加载的需求,即在运行时才进行模

webpack 前端加载工具 让 浏览器端 javascript 执行 CommonJS规范

#为什么用webpack 如果我们 前端 javascript 能像 node.js 一样 require 去引用一个依赖包,那么前端的世界就不会像现在这么乱 现在为什么乱? 假设: a.js 依赖 b.js b.js 依赖 c.js c.js 依赖 d.js 如果在我们前端去引用这些依赖的时候,往往是这样的: <script src='a.js'></script> <script src='b.js'></script> <script src='c.js'></script> <scri

CommonJS 是什么 规范

概述 CommonJS是服务器端模块的规范,Node.js采用了这个规范。 根据CommonJS规范,一个单独的文件就是一个模块。 加载模块使用require方法,该方法读取一个文件并执行,最后返回文件内部的exports对象。下面就是一个简单的模块文件example.js。 console.log("evaluating example.js"); var invisible = function () { console.log("invisible"); } exports.message = "hi"; exports.say = function () { c

javascript 动态加载按顺序加载运行 js

javascript 在浏览器中的加载是如何的? 如何你的 script 上没有任何 异步,阻塞 等标注: 浏览器会异步加载 javascript 文件,但是会按照引用文件中的书写顺序从上到下执行解析 javascript Defer属性标记 defer是html4.0中定义的,该属性使得浏览器能延迟脚本的执行,等文档完成解析完成后会按照他们在文档出现顺序再去下载解析。 也就是说defer属性的 script 就类似于将 script 放在body中的加载 效果一致. 但是defer属性在各个浏览器中支持程度有点不同,就是说,有的浏览器不完全支持. Async属性标注 as

MP4Box 借用HTML5 file api 本地读取 mp4 头信息

上一篇博文介绍了 html5 file api html5 提供了一套可以操作本地文件的 api ,但是有一定的局限性 必须由用户发起一个事件,所以你不要妄想着用户浏览器加载某个站点时,主动去读取他本地硬盘的资料....不可能的. 你的浏览器必须支持 html5 的 file api ,所以你也不要妄想去兼容IE6 用户发起行为比如: file upload 操作, 文件拖拽 等. 最近遇到一个需求 1.本地上传视频要保存到七牛服务器 2.提交切割视频任务 (大文件切割成多份) 3.返回视频截图 (按视频长短截取图片,供管理员审核视频内容) 七牛这边提供的有 j

node.js 使用 UglifyJS2 高效率压缩 javascript 文件

UglifyJS2 这个工具使用很长时间了,但之前都是在 gulp 自动构建 时用到了 UglifyJS 算法进行压缩. 最近玩了一下 UglifyJS2 ,做了一个 在线压缩javascript工具 欢迎点击玩耍. 为什么要压缩 javascript 因为每个人开发者的书写习惯,定义参数习惯,已经使用习惯都不一样. 所以相同的功能出自不同开发者代码各异.这里牵扯到一个代码所占空间. 以前端为例来说明 大家通常都会认为,现在在网络时代,动不动就是10M光纤,拨号上网让人感觉是上个世纪的方式..... 说法是没有问题,但是,我们今天讨论的并不是终端下载速度. 而是前端压缩对服务器有何利

二维码的容错率起到了什么作用!

前几天和大家分享了一篇 javascript生成二维码,实现微信跳转 里面提到了一个二维码的容错率,知道今天发现了一个bug ,又重新找了找关于javascript 生成二维码的资料.回头我会整理一下,提供微信端跳出内置浏览器的最佳方案 什么是容错率 顾名思义,就是容许犯错的概率 二维码的容错率 是指生成的二维码允许犯错吗? 不是! 二维码的容错率,是指你生成的二维码就算被遮挡了一部分,或者有一部分没有完全显示出来,当时用户通过各种各样品牌的手机都能扫描成功,这个被遮挡部分在全部的比值,就相当于一个容错率 所以二维码的容错率,跟贴切的叫法是,二维码的冗余度有多大. 什么是冗余度

javascript 中的 Date 类型字符串如何转化为时间类型

javascript 中对于时间类型的处理 如何把日期字符串如“2015-09-19 09:48:46”转换为Date对象 第一种方法: 我们可以按下面的方法来拆分上面的时间字符串 var str="2015-09-19 09:48:46"; var strArray=str.split(" "); var strDate=strArray[0].split("-"); var strTime=strArray[1].split(":"); var time=new Date(strDate[0],(strDate[1]-parseInt(1)),strDate[2],strTime[0]

javascript 关于Date 时间类型 处理方法

上一篇博客中和大家分享了关于 字符串转时间类型 这一篇顺便整理下 javascript 中 Date 类型的一些方法 var time = new Date(); var year=time.getYear(); //获取当前年份(2位) var year1=time.getFullYear(); //获取完整的年份(4位,2015-????) var moonth=time.getMonth(); //获取当前月份(0-11,0代表1月) time.getDate(); //获取当前日(

javascript 中的 new Array() 和 var arr=[] 有何区别

javascript 中 new Array() 和 var arr=[ ] 创建数组到底有何不同? 今天就探讨一个 JavaScript 中很常见的问题. var arr=[] 这是一种字面量定义数组的方法 var arr=new Array() 这是调用数组构造函数生成的数组 上面的2种定义数组的方法到底一样不一样 目前我们大致的认同是下面这样的 用new 关键字去内存开辟一个存储地址比较耗资源,耗内存. 而字面量方式直接在内存开辟一个存储字段相对简单,不耗资源. 我们首先不去否定上面的结论对不对. 首先从功能上来说 var =arr=[] 和 var arr= new

javascript 生成二维码实现链接从微信内跳出

现在的二维码相当火,借着移动互联网的风口也快飞起来了.现在各种语言的各种开源包,基本都有对应的生成二维码的源码.但是今天我们分享的不是服务器生成二维码,而是前端页面如果用 javascript 来生成一个二维码.这种动态生成二维码的需求越来越多.如果都要依靠服务器端赖生成,第一:面临资源紧缺的状况,如果在大的并发环境,这种cpu密集型计算必定导致一个问题,就是请求排队,那就不用谈了.用户不会一直在傻傻的等你.第二:就算你顺利生成了二维码,还面临一个网络传输带宽的压力,虽然它很小很小,但是当在一个并发压力大的环境下,依然面临带宽被占的问题.这样说来,如果能在客户端生成二维码,貌似是最好的解决方案

ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(二)

接着上一篇的ECMAScript 6 数组扩展方法数组元素迭代方法还剩下 filter , some , every3. filter过滤数组,将数组元素迭代,依次调用回调函数array.filter(callback);实例:我们遍历迭代a数组,然后每个元素对2整除,符合条件的返回.vara=[1,2,3]; varb=a.filter(function(item,index,a){ returnitem%2==0; }); console.log(b);filter 第一个参数是回调函数function(item,index,a)item 是当前迭代元素index 当前迭代元素所在索引a

回到顶部