Java方法详解
1、方法的设计原则
在Java的语言中,方法相当于C语言中的函数。
方法的本意是功能块。因此,在设计方法时,最好保持方法的原子性(即:一个方法只完成一个功能),这样有利于我们后期的扩展。
2、方法的定义
在Java中,声明一个方法的语法格式如下:
1234修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) { 方法体语句; return 返回值;}
修饰符:如public、static等。
return关键字:用于结束方法以及返回方法指定类型的值。
3、方法的调用
**(1)调用方法:**对象名.方法名(实参列表)
**(2)调用方式:**Java支持两种调用方法的方式。
当方法返回一个值的时,方法调用通常会被当做一个值。如:
1int larger = max(30,40);
当方法返回值为void时,方法调用一定是一条语句。如:
1System.out.println("Hello!");
4、方法重载
(1)重载:就是在一个类中,函数名相同,但形参不同的函数。
(2)方法重载的规则:
方法名称必 ...
Java流程控制
1、Java 常用类——Scanner(扫描器) 类
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
1.1、创建 Scanner 对象
Scanner的构造器支持多种方式,我们可以直接从输入流、文件和字符串中来构建Scanner对象。
借助于Scanner,我们既可以对任何字符串和基本类型(如int和double)的数据进行分析,也可以针对任何要处理的文本内容编写自定义的语法分析器。
1.1.1、创建输入流扫描器
1Scanner s = new Scanner(System.in);
创建Scanner对象时,需要传入System.in对象,Scanner通过传入的System.in获取用户输入。
当我们创建完一个Scanner对象后,程序在执行next()或nextXxx()等方法时将会造成堵塞,直到有内容输入为止。
Scanner默认使用空格作为分割符来分隔文本,用户也可以使用方法**useDelimiter()**方法自定义新的分隔符。
当用户输入一段字符串并按下回车键时,Scanner对象便可通过**nex ...
Java基本语法
1、注释
单行注释
多行注释
文档注释(JavaDoc)
2、关键字
Java关键字是对Java编译器有特殊含义的字符串,是编译器和程序员的一个约定,程序员利用关键字来告诉编译器其声明的变量类型、类、方法特性等信息。
Java语言定义的关键字如下:
3、标识符
标识符是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。
注意:
所有的标识符都应该以字母(大写或小写)、美元符($)、或下划线(_)开始,不能以数字开头;
首字符后面可以是字母(大写或小写)、美元符($)、下划线(_)或数字的任意组合;
不能使用Java关键字作为标识符;
标识符是大小写敏感的。
可以使用中文命名,但一般不建议使用,也不建议使用拼音。
4、数据类型
Java是一种强类型语言。
4.1、强类型语言&弱类型语言
强类型语言
强类型语言是一种强制类型定义的语言。
一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了。
强类型语 ...
初识Java
1、Java帝国的诞生
一场旷日持久的战争。
2、Java特性和优势
简单性
Java是C++的纯净版,没有头文件、指针运算、内存管理等。
面向对象
万物皆对象。
可移植性
跨平台。(Write Once,Run Anywhere)一次编写,到处运行。
高性能
分布式
通过计算机网络将后端工作分布到多台主机上,多个主机一起协同完成工作。
动态性
动态语言显著的特点是在程序运行时,可以改变程序结构或变量类型,典型的动态语言有Python、ruby、javascript等。
Java语言本身是不具有动态性的,但它通过反射机制以及字节码操作获得类似动态语言的特性。
动态性是Java的一个重要特性,我们未来要学习的很多框架,它们的底层都是基于反射来实现的。这一点也是C++无法实现的。
多线程
安全性
健壮性
3、Java的三大版本
**JavaSE:**标准版,去占领桌面,JavaEE的基础(桌面程序、控制台开发等)
**JavaME:**移动版,去占领手机,快死了(手机、小家电、嵌入式开发等)
**JavaEE:**企业版,去占领服务器,如 ...
如何使用d3.js绘制坐标轴?
引言
如果让你绘制一个坐标轴,你会怎么做?
一提到 “数据可视化”,相信很多人第一时间想到的便是那些琳琅满目的web前端第三方库,如:Highcharts,D3.js,Echarts (百度)和AntV(阿里)等。
虽然它们实现数据可视化的方式各不相同,但万变不离其宗。所有的第三方库都是基于以下两种浏览器图形渲染技术实现的,即: Canvas 和 SVG 。
本文主要介绍使用d3.js绘制坐标轴的具体过程。
D3.js简介
D3:数据驱动文档(Data-Driven Documents)。
是一个基于 web 标准的 JavaScript可视化库。
它可以通过使用SVG、Canvas和HTML把数据鲜活形象地展现出来。
兼容性: 兼容IE9 及以上的所有主流浏览器,对于移动端的兼容性也同上。
入门略复杂,但灵活可控,可以实现私人订制。
D3.js(v3) 基于SVG,方便自己定制;D3.js(v4)支持Canvas+SVG。
代码开源
完全免费
官方文档: https://github.com/xswei/d3js_doc
实现
该功能的实现过 ...
一种基于css的页面翻转效果及其实现方法
效果
本文提供一种基于css的页面翻转效果的实现方法。运行效果如下:
实现
该功能的实现过程较为简单,主要由test.html文件和flipper.css文件组成。具体代码如下:
1、test.html文件
12345678910111213141516<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>页面翻转效果测试</title> <link href="./flipper.css" rel="stylesheet" type="text/css"></head><body> <div class="flipperContainer"> <div class="flipper"> ...
一种固定表格上表头和左表头的方法
效果
本文提供一种基于jquery的固定表格上表头和左表头的方法。运行效果如下:
思路
1、监听某个元素的滚动条事件
$(selector).scroll(function () {…})
2、获取滚动条滚动的距离
$(selector).scrollLeft()
$(selector).scrollTop()
3、根据滚动距离调整表头的相对位置
$(selector).css({“position”:“relative”,“left”:“…”,“z-index”:“…”});
$(selector).css({“position”:“relative”,“top”:“…”,“z-index”:“…”});
注:表头元素应采用相对位置。
实现
该功能的实现过程较为简单,主要由fixTableHead.html文件、fixTableHead.css文件和fixTableHead.js组成。具体代码如下:
1、fixTableHead.html文件
1234567891011121314151617181920212223242526272829303132333435363738394 ...
线性表——(单向)链表
引言
动态数组可能会造成内存空间 “申请的多而使用的少”,链表却可以做到 “使用多少就申请多少”。
1、链表(SingleLinked List)
链表是一种链式存储的线性表,所有元素的内存地址不一定是连续的。
当我们添加一个元素时,首先会创建一个节点(Node)对象,在该节点内部既包含一块用来存放该节点数据的内存空间,又包含一块用来存放下一个节点对象引用(地址)的内存空间。
我们称第一个节点为 “头节点”,最后一个节点为 “尾节点”。
**注:**由于最后一个节点后面是没有下一个节点的,所以其内部存储的下一个节点地址为空(null)。
2、单向链表的设计
(1)类的结构设计
在编程之前,我们需要先对链表类(SingleLinkedList)的结构进行设计。如下图所示:
单向链表类需要的成员主要包括:
链表存放元素的数量。 //private int size;
size = 元素(Element)数目 = 节点(Node)数目。
第一个节点的引用。 //private Node<E> first;
first指向链表的第一个节点。
内部静态节点(Nod ...
线性表——动态数组
引言
数据结构是计算机存储、组织数据的方式。常见的数据结构有:
(1)线性结构
如:线性表(包括:数组、链表、栈、队列、哈希表)。
(2)树形结构
如:二叉树、AVL树、红黑树、B树、堆、Trie、哈夫曼树、并查集。
(3)图形结构
如:邻接矩阵、邻接表。
注:在实际应用中,要根据使用场景选择最合适的数据结构。
线性表
(1)线性表是具有n(n>=0)个相同类型元素的有限序列。 如下图所示:
每个元素都对应一个索引,可以通过索引找到相应的元素。
a1a_1a1是首节点(首元素),ana_nan是尾节点(尾元素)。
a1a_1a1是a2a_2a2的前驱,a2a_2a2是a1a_1a1的后继。
(2)常见的线性表有: 数组、链表、栈、队列、哈希表(又称“散列表”)。
线性表——“动态数组”
1、数组(Array)
数组 是一种顺序存储 的线性表,所有元素的内存地址是连续的。
例:使用Java新建一个名称为array的数组。
123public static void main(String[] args) { int[] array = ...
数据结构与算法——复杂度
算法是用于解决特定问题的一系列的执行步骤。使用不同算法,解决同一个问题,效率可能相差非常大。为了对算法的好坏进行评价,我们引入 “算法复杂度” 的概念。
1、引例:斐波那契数列(Fibonacci sequence)
已知斐波那契数列:F(1)=1,F(2)=1,F(n)=F(n−1)+F(n−2)(n≥3,n∈N∗)F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N^*)F(1)=1,F(2)=1,F(n)=F(n−1)+F(n−2)(n≥3,n∈N∗),求它的通项公式F(n)F(n)F(n)。
求解斐波那契数列的方法有很多种,这里只介绍两种:递归法和平推法。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061package com.atangbiji;public class Main { public static void main(Strin ...