JAVA学习
该专栏是我在大四所创建的,主要是想重新回首过来才重新温习一下java的相关知识。里面会涉及一些java的基础知识还有web和框架的一些知识点的回顾。我会将自己之前遇到的一些java问题再次提出并解决希望能和csdn的各位博主一起交流成长。希望在编程之路上越走越远。
echo_wjcwjc
只会c和java
展开
-
static对象锁结合synchronized的代码块的线程现象分析
目录一、代码如下一、代码如下1、创建一个Thread的子类并重写run方法package itcast;import java.text.SimpleDateFormat;import java.util.Date;public class MyThread1 extends Thread{ private static Object lock = new Object();//定义一个静态的锁 private static SimpleDateForma原创 2020-06-07 17:22:53 · 423 阅读 · 0 评论 -
Java的静态变量,成员变量,静态代码块,构造块的加载顺序
问题的产生来自下面这个链接(http://bbs.csdn.net/topics/391908395)public class StaticTest{ public static void main(String args[]){ staticFunction(); } static StaticTest st = new StaticTest();...转载 2018-08-01 18:48:02 · 261 阅读 · 0 评论 -
在静态方法中为啥不能创建内部类的实例对象
package cn.itcast.thread;/** * 静态方法中不能创建内部类的实例对象 * @author wjc * */public class ThreadDemo1 {//ThreadDemo1为外部类 /** 为啥在静态方法中不能创建内部类的实例对象 内部类的一个重要特点就是能够访问外部类的成员 而外部类的成员只有在外部类对象创建时才会存在 ...原创 2018-07-31 18:26:23 · 2370 阅读 · 1 评论 -
在eclipse中如何真正的复制粘贴一个项目
1.首先将项目复制一份(可以使用快捷键Ctrl+C)或者如下图2.在空白处粘贴这个项目(可以使用快捷键Ctrl+V)或者如下图3.修改一个所粘贴项目的名称(但还要修改它的Web Project Setting 可以通过右击这个项目 -->>Properties-->再找到Web Project Setting )将里面的Context root的值改为项目名...原创 2018-06-10 20:28:34 · 19683 阅读 · 3 评论 -
Eclipse—手动修改配置文件更改默认的工作空间
我们设置了eclipse的默认工作目录,并且选中了下次不提示,但是又想修改默认的目录,怎么办? File -> Switch Workspace如果eclipse进入工作空间时发生异常,该怎么办?打开eclipse安装目录进入 configuration\.settings 打开org.eclipse.ui.ide.prefs文件 找到 ECENT_WORKSPACES=E\:\\works...转载 2018-02-20 09:40:29 · 911 阅读 · 0 评论 -
并行与并发
1.并行物理上同时发生,指在某一个时间点同时运行多个程序。比如把十个操作交给两个人处理时,这样两人并行处理。2.顺序用于表示多个操作"一次处理"。比如把十个操作交给一个人处理时,这样要一个一个顺序处理。2.并发逻辑上同时发生,指在某一个时间内同时运行多个程序。用于表示将一个操作分成多个部分并且允许无需操作。比如把十个操作分成相对独立的两类,这样便能开原创 2018-02-07 19:52:00 · 202 阅读 · 0 评论 -
HashSet底层如何实现内容唯一
HashSet集合的add()方法的源码interface Collection { ...}interface Set extends Collection { ...}class HashSet implements Set { private static final Object PRESENT = new Object(); private transient ...转载 2018-12-04 21:07:11 · 468 阅读 · 0 评论 -
关于集合去除重复的引用类型的对象的问题
题目讲解: 我们现在要将一个集合内添加的学生类对象中,将具有相同成员变量中的对象去掉。如:Student s1 = new Student(10, "1");Student s2 = new Student(10, "1");s1与s1具有相同的成员变量值在集合中就应该保留其中一个对象。学生类代码package test;public class Student...原创 2018-12-03 19:50:42 · 258 阅读 · 0 评论 -
详解Object类的equals方法
在我的理解中其实Object类的equals方法比较的是栈值(地址值)和"=="效果一样而重写的equals方法比较的是堆值(值)。下面是我转载的内容,上面是我的见解url:https://blog.csdn.net/beautiful_face/article/details/55210412值类型与引用类型众所周知,Java的数据类型分为两类,8种基本的数据类型(byte、sho...转载 2018-12-03 19:24:25 · 285 阅读 · 0 评论 -
集合和数组的区别
A:长度区别 数组长度固定 集合长度可变B:内容区别 数组可以是基本类型,也可以是引用类型 集合只能是引用类型C:元素内容 数组只能存储同一种类型 集合可以存储不同类型(其实集合一般存储的也是同一种类型)...转载 2018-12-03 09:18:53 · 140 阅读 · 0 评论 -
List的3个子类的特点
ArrayList特点: 底层数据结构是数组,增删慢,查询快 线程不安全,效率高Vector特点: 底层数据结构是数组,增删慢,查询快 线程安全,效率低LinkedList: 底层数据结构是双重链接列表,增删快,查询慢 线程不安全,效率高...原创 2018-12-03 09:16:01 · 164 阅读 · 0 评论 -
集合中的并发修改异常
问题 我有一个集合,如下,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;/*(运行时了Concu...转载 2018-11-30 19:39:17 · 377 阅读 · 0 评论 -
迭代器为啥不定义一个类而不是一个接口
因为不同集合的数据结构和存储方式不同,所以遍历也不同。假迭代器定义为一个类,首先若是具体类那么就会提供一个公共的实现不同集合遍历的方法,我们知道这是不可能的。若是一个抽象类又因为java中类是单继承的所以无法同时继承多个类所以不行而且集合的根接口无法继承抽象类。其实迭代器的具体实现方法是在集合的具体子类中以内部类的方式实现。具体子类中以内部类的方式实现的源码public in...原创 2018-11-30 16:51:25 · 318 阅读 · 0 评论 -
java中四个权限修饰符的作用域
private:类内访问默认:包内访问protected:包外子类访问public:包外访问转载 2018-11-27 20:55:50 · 1872 阅读 · 0 评论 -
类与类,类与接口,接口与接口,抽象类与接口
类与类 继承关系,只能单继承但能够多层继承类与接口 实现关系,可以单实现,也可以多实现并且还可以在继承一个类的同时实现多个接口接口与接口 继承关系,可以单继承也可以多继承抽象类与接口 抽象类可以实现接口,但...原创 2018-11-27 20:50:23 · 75 阅读 · 0 评论 -
final和抽象类的介绍
final final 修饰类,类不能被继承 final 修饰方法,方法不能被重写。 final 修饰变量,变量不能被重新赋值。变量变成常量抽象类 概念: A:抽象类和抽象方法必须用abstract关键字修饰 ...原创 2018-11-27 20:46:14 · 676 阅读 · 0 评论 -
java程序易错点的面试题
分析程序看有没有问题,如果有,说出原因即可1.abstract class Name { private String name; public abstract boolean isStupidName(String name) {}//这边出错了 public abstract boolean isStupidName(String name);} 2...原创 2018-11-26 15:53:46 · 666 阅读 · 0 评论 -
局部代码块 构造代码块 静态代码块 成员变量 静态变量执行顺序
局部代码块 局部位置在方法内部,用于限定变量的生命周期,及早释放变量,提高内存利用率。 {}构造代码块 在类中的成员位置(就是成员变量和成员方法可以在的位置)。在构造方法执行之前执行。 每一次调构造方法执行前都会自动先执行构造代码块。 {}静态代码块 ...原创 2018-11-23 20:10:49 · 1238 阅读 · 0 评论 -
java程序中创建一个对象做了那些事情
Class HelloWorld{ private int a = 10; public HelloWorld(){ a = 5; } public static void main(String[] args){ HelloWorld hw = new HelloWorld(); }}原创 2018-11-23 17:00:31 · 397 阅读 · 0 评论 -
成员变量与局部变量的区别和静态变量与成员变量的区别
成员变量与局部变量的区别 A:在类中的位置不同:(概念) 成员变量:在类中方法外 局部变量:在方法定义中(形参)或者方法声明上 B:在内存中的位置不同(空间) ...原创 2018-11-23 16:32:45 · 158 阅读 · 0 评论 -
对象在内存中是如何存放的
关于栈、堆、方法区分别存放哪些元素具体请参考:https://blog.csdn.net/qq_35654259/article/details/84197879 案例如下:/* 手机类的测试*/class Phone { //品牌 String brand; //价格 int price; //颜色 String color; //打电话的方法 publi...转载 2018-11-18 19:45:05 · 645 阅读 · 0 评论 -
数组初始化的两种方式
一:动态初始化 初始化时只指定数组长度,由系统为数组分配初始值。 二:静态初始化 初始化时指定每个数组元素的初始值,由系统决定数组长度 案例如下public class ArrayDemo{ /** * @param args */ public static void main(String[] args) { // TODO A...原创 2018-11-18 16:24:19 · 1720 阅读 · 0 评论 -
方法重载
方法重载概述 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可 方法重载条件有两个以上的同名方法(方法名相同) 参数类型,参数个数,参数类型的顺序不同(参数列表不同) 方法重载注意 与方法的返回值无关 案例如下public class MehodDemo { /** * @param arg...原创 2018-11-18 16:16:31 · 65 阅读 · 0 评论 -
java 堆 栈 方法区 数据存放 操作流程
栈: 1 基础数据类型 byte short int long float double char boolean 2 方法的形式参数,方法调用完后从栈空间回收 3 引用对象的地址,引用完后,栈空间地址立即被回收,堆空间等待GC a) 栈内的数据线程之间独立 b) 具体细分为: b.1) 基本类型变量区 b.2) 执行环境上下文 b.3) 操作指令区 4 栈内存的变量使...转载 2018-11-18 14:00:58 · 1213 阅读 · 0 评论 -
sc.next() 和 sc.nextLine 的区别
*两个都是用来接收用户的输入,区别在于: next()从遇到第一个有效字符(非空格、换行符)开始扫描,遇到第一个分隔符或结束符(空格’ ‘或者换行符 ‘\n’)时结束。 nextLine()则是扫描剩下的所有字符串知道遇到回车为止。**聪明的你get到了吗? 如果没有,没关系,我们来举个例子,对于如下输入:Scanner sc = new Scanner(System.in);//...转载 2018-11-17 13:47:28 · 1405 阅读 · 3 评论 -
位运算符的"~"和">>"以及">>>"
位运算符 运算符 运算 范例 << 左移 3 << 2 = 12 --> 3*2*2=12 >> 右移 3 >> 1 = 1 --> 3/...转载 2018-11-17 13:03:45 · 1231 阅读 · 0 评论 -
逻辑运算符中"&"与"&&"和"|"与"||"的区别
“&”和“&&”的区别:单&时,左边无论真假,右边都进行运算;双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算;class OperatorDemo { public static void main(String[] args) { int x = 3; int y = 4; /* ...原创 2018-11-17 12:48:52 · 430 阅读 · 0 评论 -
Java中 s = s+1 与 s +=1 的区别
问题:public class Operator { public static void main(String[] args) { opreator1(); opreator2(); } private static void opreator1() { short s = 1; s = s+1;//会报错 System.out.println(s); }...原创 2018-11-14 19:40:00 · 1065 阅读 · 0 评论 -
java的常见命名规范
包 全部小写 单级包:小写 举例:demo 多级包:小写,并用.隔开 举例:cn.itcast.dao类或者接口 一个单词:首字母大写 举例:Student 多个单词:每个单词首字母大写 ...原创 2018-11-10 13:57:58 · 95 阅读 · 0 评论 -
数据类型以及数据类型的转换
一、基本数据类型:byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0short:短整型,在内存中占16位,即2个字节,取值范围-32768~32767,默认值0int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0long:长整型,在内存中占64位,即8个字节...转载 2018-11-10 13:51:15 · 342 阅读 · 0 评论 -
java中path环境变量和classpath环境变量的作用以及配置
path环境变量 原因:在jdk的bin目录下有编译工具(javac.exe)和运行工具(java.exe),如果不配置path环境变量只有在bin目录下才能编译运行java程序。 作用:通过配置path环境变量,将javac指令所在目录也就是JDK安装目录下的bin目录配置到path变量下,即可使javac指令在任意目录下运行。 配置: 讲计算机或者我的电脑右击-...原创 2018-11-08 10:25:56 · 3804 阅读 · 0 评论 -
JDK,JRE,JVM联系及区别
JVM--保证了java语言的跨平台性 就像我们出国旅游如果不会说当地的语言就会带一个翻译官。jvm的作用就像翻译官一样可以在不同的操作系统上运行。 因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。JRE--Java程序的运行环境 JRE是由JVM和java程序...原创 2018-11-08 10:03:34 · 74 阅读 · 0 评论