1、可视化日历程序(简陋版)

 package cn.zh.abstrac;

 import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner; public class TestCalendar {
public static void main(String[] args) throws ParseException {
System.out.println("请输入一个日期:(格式:yyyy-MM-dd)");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(str);
Calendar c = new GregorianCalendar();
c.setTime(date); int day = c.get(Calendar.DAY_OF_MONTH);
int days = c.getActualMaximum(Calendar.DATE);
System.out.println("日\t一\t二\t三\t四\t五\t六"); c.set(Calendar.DAY_OF_MONTH, 1); for (int i = 0; i < c.get(Calendar.DAY_OF_WEEK) - 1; i++) {
System.out.print ("\t");
} for (int i = 1; i <= days; i++) {
if (day == c.get(Calendar.DAY_OF_MONTH)){
System.out.print(c.get(Calendar.DAY_OF_MONTH) + "*\t");
}else {
System.out.print(c.get(Calendar.DAY_OF_MONTH) + "\t");
} if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
System.out.println(); //换行
}
c.add(Calendar.DAY_OF_MONTH, 1);
}
}
}

运行结果图

2、使用递归打印目录树结构

 package cn.zh.abstrac;

 import java.io.File;

 public class TestFile {
public static void main(String[] args) {
File f = new File("E:\\小程序");
printFile(f,0 );
} static void printFile(File file,int level) {
//输出层次
for (int i = 0; i < level; i++) {
System.out.print("-");
}
System.out.println(file.getName());
if (file.isDirectory()) {
File[] files = file.listFiles(); for (File temp : files) {
printFile(temp,level+1);
}
} }
}

运行结果图

3、枚举的用法

 package cn.zh.abstrac;

 import java.util.Random;

 public class TestEnum {
public static void main(String[] args) {
//枚举遍历
for (week k : week.values()) {
System.out.println(k);
}
//switch语句中使用枚举
int a = new Random().nextInt(4); //生成0,1,2,3的随机数
switch (Season.values()[a]) {
case SPRING:
System.out.println("春天");
break;
case SUMMER:
System.out.println("夏天");
break;
case AUTUMN:
System.out.println("秋天");
break;
case WINTER:
System.out.println("冬天");
break;
}
}
}
enum Season{
SPRING,SUMMER,AUTUMN,WINTER
}
enum week{
星期一,星期二,星期三,星期四,星期五,星期六,星期日,
}

运行结果图

4、异常处理

 package cn.zh.abstrac;

 import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException; public class TestA {
public static void main(String[] args) {
FileReader reader = null;
try {
reader = new FileReader("d:/a.txt");
System.out.println("111111111");
char c = (char)reader.read();
char c1 = (char)reader.read();
System.out.println(""+c+c1);
}catch (FileNotFoundException e){
System.out.println("2222222222222222");
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}finally {
System.out.println("333333333333333333");
try {
if(reader !=null){
reader.close();
}
}
catch (Exception e){
e.printStackTrace(); }
}
}
}

运行结果图

5、容器和数据结构

(1)简化版-手工实现ArrayList

 package cn.zjc.mycollection;

 public class SxtArrayList {
private Object[] elementDate;
private int size; private static final int DEFALT_CAPACITY = 10; public SxtArrayList() {
elementDate = new Object[DEFALT_CAPACITY];
} public SxtArrayList(int capacity) {
elementDate = new Object[capacity];
} public void add(Object obj) {
elementDate[size++] = obj;
} public String toString() {
StringBuilder sb = new StringBuilder(); sb.append("[");
for (int i = 0; i < size; i++) {
sb.append(elementDate[i]+",");
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
} public static void main(String[] args) {
SxtArrayList s1 = new SxtArrayList(20);
s1.add("aa");
s1.add("dd"); System.out.println(s1);
}
}

运行结果图

(2)数组的扩容操作

 package cn.zjc.mycollection;

 public class SxtArray01<E> {
private Object[] elementData;
private int size; private static final int DEFALT_CAPACITY = 10; public SxtArray01() {
elementData = new Object[DEFALT_CAPACITY];
} public SxtArray01(int capacity) {
elementData = new Object[capacity];
} public void add(E element) {
// 什么时候扩容
if (size == elementData.length) {
//怎么扩容(扩容操作)
Object[] newArray = new Object[elementData.length + (elementData.length >> 1)];
System.arraycopy(elementData, 0, newArray, 0, elementData.length);
elementData = newArray;
}
elementData[size++] = element;
} public String toString() {
StringBuilder sb = new StringBuilder(); //[a,b,c]
sb.append("[");
for (int i = 0; i < size; i++) {
sb.append(elementData[i] + ",");
}
sb.setCharAt(sb.length() - 1, ']');
return sb.toString();
} public static void main(String[] args) {
SxtArray01 s1 = new SxtArray01(20); for (int i = 0; i < 25; i++) {
s1.add("zh" + i);
}
System.out.println(s1);
}
}

运行结果图

(3)加get/set,索引不合法等

 package cn.zjc.mycollection;

 public class SxtArray01<E> {
private Object[] elementData;
private int size; private static final int DEFALT_CAPACITY = 10; public SxtArray01() {
elementData = new Object[DEFALT_CAPACITY];
} public SxtArray01(int capacity) {
elementData = new Object[capacity];
} public void add(E element) {
// 什么时候扩容
if (size == elementData.length) {
//怎么扩容(扩容操作)
Object[] newArray = new Object[elementData.length + (elementData.length >> 1)];
System.arraycopy(elementData, 0, newArray, 0, elementData.length);
elementData = newArray;
}
elementData[size++] = element;
} public E get(int index){
checkRange(index);
return (E)elementData[index];
} public void set(E element,int index){
checkRange(index);
elementData[index] = element;
}
public void checkRange(int index){
//索引合法判断[0,size)
if (index<0||index>size-1){
//不合法
throw new RuntimeException("索引不合法!"+index);
}
} public String toString() {
StringBuilder sb = new StringBuilder(); //[a,b,c]
sb.append("[");
for (int i = 0; i < size; i++) {
sb.append(elementData[i] + ",");
}
sb.setCharAt(sb.length() - 1, ']');
return sb.toString();
} public static void main(String[] args) {
SxtArray01 s1 = new SxtArray01(20); for (int i = 0; i < 25; i++) {
s1.add("zh" + i);
}
s1.set("AAAAA",10);
System.out.println(s1);
System.out.println(s1.get(26));
}
}

运行结果图

(4)链表的用法

 package cn.zjc.mycollection;

 public class Node {
Node previous; //上一个节点
Node next; //下一个节点
Object element; //元素数据 public Node(Node previous, Node next, Object element) {
this.previous = previous;
this.next = next;
this.element = element;
} public Node(Object element) {
this.element = element;
}
}

Node

 package cn.zjc.mycollection;

 /*
* 自定义一个链表
*/
public class SxtLinkedList01 { private Node first;
private Node last; private int size; //插入节点操作
public void add(int index, Object obj) {
Node newNode = new Node(obj);
Node temp = getNode(index); if (temp != null) {
Node up = temp.previous;
up.next = newNode;
newNode.previous = up; newNode.next = temp;
temp.previous = newNode;
} } //remove方法
public void remove(int index) {
Node temp = getNode(index); if (temp != null) {
Node up = temp.previous;
Node down = temp.next;
if (up != null) {
up.next = down;
}
if (down != null) {
down.previous = up;
}
//被删除的元素是第一个元素时
if (index == 0) {
first = down;
}
//被删除的元素是最后一个时
if (index == size - 1) {
last = up;
}
size--;
}
} //get方法,传递索引,返回对应的内容
public Object get(int index) {
if (index < 0 || index > size - 1) {
throw new RuntimeException("索引数字不合法:" + index);
} Node temp = getNode(index);
return temp != null ? temp.element : null;
} public Node getNode(int index) {
Node temp = null; if (index <= (size >> 1)) {
temp = first;
for (int i = 0; i < index; i++) {
temp = temp.next;
}
} else {
temp = last;
for (int i = size - 1; i > index; i--) {
temp = temp.previous;
}
}
return temp;
} public void add(Object obj) {
Node node = new Node(obj); if (first == null) { first = node;
last = node;
} else {
node.previous = last;
node.next = null; last.next = node;
last = node;
}
size++;
} public String toString() {
Node temp = first;
while (temp != null) {
System.out.println(temp.element);
temp = temp.next;
}
return "";
} public static void main(String[] args) {
SxtLinkedList01 list = new SxtLinkedList01(); list.add("a");
list.add("d");
list.add("c");
list.add("1");
list.add("3");
list.add("A"); System.out.println(list);
System.out.println(list.get(2));
System.out.println("==============");
list.remove(1);
System.out.println(list);
System.out.println("==============");
list.add(2,"黄飞鸿");
System.out.println(list);
}
}

运行结果图

JAVA进阶20的更多相关文章

  1. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

  2. Java线程间通信方式剖析——Java进阶(四)

    原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...

  3. 当我们说线程安全时,到底在说什么——Java进阶系列(二)

    原创文章,同步发自作者个人博客,转载请以超链接形式在文章开头处注明出处http://www.jasongj.com/java/thread_safe/ 多线程编程中的三个核心概念 原子性 这一点,跟数 ...

  4. 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)

    本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为.同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1. ...

  5. JAVA进阶之旅(二)——认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践

    JAVA进阶之旅(二)--认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践 我们继续聊JAVA,这次比较有意思,那就是反射了 一.认识 ...

  6. Java进阶(五十二)利用LOG4J生成服务日志

    Java进阶(五十二)利用LOG4J生成服务日志 前言 由于论文写作需求,需要进行流程挖掘.前提是需要有真实的事件日志数据.真实的事件日志数据可以用来发现.监控和提升业务流程. 为了获得真实的事件日志 ...

  7. Java进阶资料汇总

    Java经过将近20年的发展壮大,框架体系已经丰满俱全:从前端到后台到数据库,从智能终端到大数据都能看到Java的身影,个人感觉做后台进要求越来越高,越来越难. 为什么现在Java程序员越来越难做,一 ...

  8. Java进阶2 数组内存和对象的内存管理知识

    Java进阶2 数组内存和对象的内存管理知识 20131028 前言: 在面试的时候,如果是Java的编程语言,也许你认为没有什么可以问的,只能够说明你对于Java了解的太浅了,几乎就是两个星期的节奏 ...

  9. 7.19实习培训日志- java进阶

    java进阶 java集合 Collection List ArrayList jdk1.2,异步处理,性能高,线程不安全 Vector jdk1.0,同步处理,性能低,线程安全 Set HashSe ...

随机推荐

  1. robotframework上的字体放大和缩小是ctr++和ctl--

  2. CentOS7.x安装kickstart

    kickstart简介 kickstartkickstart是RedHat公司开源的软件,所以对CentOS兼容性最好,是一种无人值守的安装方式就是将手动安装配置的步骤,记录到文件中,然后通过kick ...

  3. vue项目接口域名动态获取

    需求: 接口域名是从外部 .json 文件里获取的. 思路: 在开始加载项目前 进行接口域名获取,然后重置 接口域名的配置项. 实现: 1.config/index.js 文件 进行基础配置 impo ...

  4. ExcelPower_Helper插件功能简述与演示

    部分功能演示简述: 1.文件目录浏览功能        此功能主要利用了ribbon的dynamicmenu控件,动态呈现自定义目录下的文件列表信息,支持点击打开,查看文件所在目录.功能来源于大神li ...

  5. Java的selenium代码随笔(6)

    //获取元素列表public List<WebElement> ListElements(WebElement webElement, By parentBy, By childrenBy ...

  6. 【MySQL 读书笔记】当我们在执行该查询语句的时候我们在干什么

    看了非常多 MySQL 相关的书籍和文章,没有看到过如此优秀的专栏.所以未来一段时间我会梳理读完该专栏的所学所得. 当我们在执行该查询语句的时候我们在干什么 mysql> select * fr ...

  7. mysql-笔记 隔离级别、事务

    1 隔离级别:低级别的隔离通常可以执行更高的并发,系统 开销也更低 2 Read uncommitted:事务可以读取未提交的数据,脏读,应少用 3 read committed:不可重复读,事务只能 ...

  8. element 给table的个别表格框添加样式 ---重构里面的组件

    <el-table ref="singleTable" :show-header='false' :data="tableData" align='cen ...

  9. codeforces342B

    Xenia and Spies CodeForces - 342B Xenia the vigorous detective faced n (n ≥ 2) foreign spies lined u ...

  10. bugku web web3

    flag就在这里快来找找吧http://123.206.87.240:8002/web3/ 点进去这个页面可以看到不断地有提示 flag就在这里 来找找吧 那就找一找哇 在source中可以找到一行注 ...