Java基础
java小白来了
倾听雪的声音
这个作者很懒,什么都没留下…
展开
-
Eclipse英文界面单词(乱序)
terminate: v. (使)停止、结束。 过去式:(程序)已结束【位于右下角,程序运行时为红色方块】 display selected console: 显示所选控制台(显示正在运行的控制台) 【位于右下角】原创 2020-09-22 16:51:39 · 152 阅读 · 0 评论 -
26、多线程与并行
目录一、创建线程二、线程池与数据不一致性三、线程同步一、synchronized关键字二、利用加锁同步四、线程协作 一、创建线程 1、有一个实现了runnable接口的任务类 2、利用接口来创建任务 3、将任务放在线程中执行(线程由thread类创建,任务就是代码,需要加载进线程) 4、调用线程的start方法来运行线程 代码示例:并行打印100个a,与100个b。 import java.lang.Thread; public class text { public static void m原创 2020-10-17 09:18:03 · 293 阅读 · 0 评论 -
Java基础-25、内部类总结
内部类——定义在类中的类,宿主称为外围类。 内部类的作用 1、随意访问外围类的成员以及方法,包括private修饰的。(这其实不能叫优点,毕竟普通成员函数也能做到。) 能随意访问的原因是:完成编译后内部类也有一个单独的class文件,就像普通类一样,但内部类对象的创建是有讲究的,这种“讲究”保证了内部类的实例必有外部类对象的this指针,通过this来访问对象的各种变量。 内部类的创建: 1、外围类的成员变量是内部类类型,这样外围类在实例化时成员这个成员变量就传入对应外围类对象的this了 2、外类方法中原创 2020-10-09 21:18:33 · 78 阅读 · 0 评论 -
Java基础-24、防止private限定失效
class A { private int[]a; public A(int k) { a=new int[k]; for(int i=0;i<k;i++) { a[i]=k; } } public int[] get() { return a; } } class Main { public static void main(String[] args) { A tem=new A(10); int[] b=tem.get();原创 2020-10-09 20:23:37 · 129 阅读 · 0 评论 -
Java基础-23、Set如何判断元素重复
HashSet区分重复元素: 先使用hashcode方法判断已经存在HashSet中元素的hashcode值和将要加入元素hashcode值是否相同。如果不同,直接添加;如果相同,再调用equals方法判断,如果返回true表示HashSet中已经添加该对象了,不需要再次添加(重复),如果返回false就表示不重复,可以直接加入HashSet中 TreeSet区分重复元素: TreeSet中的元素对象如果实现Comparable接口,使用compareTo方法区分元素是否重复,如果没实现Comparable原创 2020-10-08 11:37:43 · 2728 阅读 · 0 评论 -
Java基础-22、示例:对象数组的泛型排序函数
1、Comparable接口的介绍(一般涉及到比较都用这个接口,别自己定义方法) Comparable接口中定义了compareTo方法,用于比较对象。(cpp中一般是重载>) 接口定义如下: public interface Comparable< E>{ public int compareTo(E o); } 2、定义一个Student类并实现接口 class Student implements Comparable<E>{ private int score;原创 2020-10-06 16:08:53 · 167 阅读 · 0 评论 -
Java基础-21、Cloneable
1、那么重写了Object类中的clone(),为什么还要实现 Cloneable接口呢? Cloneable接口是不包含任何方法的!仅仅是针对 Object类中clone()方法的,如果clone类没有实现(继承)Cloneable接口,并调用了Object的clone()方法(也就是调用了 super.Clone()方法),那么Object的clone()方法就会抛出CloneNotSupportedException异常。 2、为什么不写个myClone(),里面用new呢? Object类的c原创 2020-10-04 13:25:24 · 235 阅读 · 0 评论 -
Java基础-20、instanceof:判断是否是某种类型的实例
是Java的一种运算符。用法: a instanceof A;//a是A的实例就返回true否则返回false 举例如下: 类A继承了类B和接口Comparable,并且类A必定继承了Object所以输出全为true import java.util.ArrayList; public class text{ public static void main(String[] args) { A xiaoli=new A("xiaoli",10); System原创 2020-10-04 11:14:42 · 352 阅读 · 0 评论 -
Java基础-19、main为什么是static
1、原因: main可以不定义成static,那你就只有创建对象,通过对象去调用main,但程序入口在main(只考虑单个类中),这样就执行不了了。所以main要定义成static(因为static修饰得成员不依赖于对象)。 2、疑问: main定义成static了,那其它成员函数不是只有定义成static才能在main里执行了吗? 对的,但一般都是通过在main中定义对象(main所属类型的对象),通过对象来使用那些成员方法的。 ...原创 2020-10-03 21:35:47 · 1077 阅读 · 0 评论 -
Java基础-18、接口
初识接口一、接口定义二、接口的作用三、接口多态的示例 一、接口定义 接口与类相似,但只包含常量和抽象方法 接口中的所有数据域都是public static final,所有方法都是public abstract。所以Java允许简写,以下两种定义是等价的 public interface T { public static final int K=1;//必须初始化,因为没有构造函数 public abstract void p(); } public interface T { int K=1;//原创 2020-10-03 21:34:13 · 95 阅读 · 0 评论 -
Java基础-17、重写(override)与重载(overload)
一、重写 重写(类似cpp中的虚函数),就是子类修改从父类继承过来的函数的函数体,名称,参数表不能修改。 1、声明为 final 的方法不能被重写。 2、声明为 static 的方法不能被重写,但是能够被再次声明。 3、子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为 private 和 final 的方法。 4、子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。 super可以调用父类被重写的方法 ...原创 2020-09-29 15:21:28 · 96 阅读 · 0 评论 -
Java基础-16、继承
先进子类的构造函数(只到super),通过super跑到父类构造函数,然后初始化成员变量(如果定义时就指定了的话)。最后接着执行自己的构造函数。 super就是调用父类构造器,如果super参数要和父类构造器参数匹配才能调用,否则报错 子类构造器不写super,则去寻找不带参数的构造器。 super和cpp中在初始化列表里指定基类构造函数功能差不多 ...原创 2020-09-29 09:24:18 · 72 阅读 · 0 评论 -
Java基础-15、hash表(HashMap)
1、HashMap的使用 HashMap<Integer,String> as=new HashMap<Integer,String>();//容器中不能放基本数据类型,必须放对象。包裹类型是基本类型对应的对象。包裹类型变量可以直接接受对应的基本类型(以后别用基本类型了,也省的有没有空间的区分了,一切皆对象多好) as.put(1,"aaa"); as.put(2,"aaa"); as.put(2,"bbb");//同一个键会覆盖值 System.out.println(as.get原创 2020-09-29 09:23:20 · 91 阅读 · 0 评论 -
Java基础-14、集合Set
1、Set 2、HashSet HashSet<String> s=new HashSet<String>; s.add("aa"); s.add("bb"); s.add("aa"); for(String k:s) { System.out.println(k); }//aa //bb set就是数学中的集合,不允许有重复元素,无序, System.out.println(*),星号可以直接是容器名字,是可以打印的,打印出来是方括号+元素。 (因为java类只要实现了 pub原创 2020-09-29 09:22:46 · 61 阅读 · 0 评论 -
Java基础-13、ArrayList
1、泛型容器 容器中可以放不同元素类型,但一但指定就不能变了。 2、Arraylist的操作原创 2020-09-29 09:22:19 · 49 阅读 · 0 评论 -
Java基础-12、for each用于数组与容器
1、for each用于基本类型的数组 int[] a=new int[10];//a是管理者 for(int i=0;i<a.length;i++) { a[i]=i; } for(int k:a) {//k可不是引用,k有实实在在的存储int的空间 //无论怎么操作k,都和a数组无关 } 2、for each用于对象数组 String[] a=new String[2];//还没有String类型的对象,只是new了两个引用的空间 a[0]="aaa"; a[1]="bbb";//字符串变量原创 2020-09-26 16:00:03 · 116 阅读 · 0 评论 -
Java基础-11、static
1、static 定义变量-类变量 该变量为类所有,只有一份。叫做类变量。不存储在对象空间中 2、static定义函数-类函数 类函数不能调用非类函数,也不能访问非类变量。类函数属于类,不属于对象。没有this指针。 ...原创 2020-09-25 10:52:40 · 103 阅读 · 0 评论 -
Java基础-9、访问属性(包管理)
1、private 只有类内可以访问,可以访问同类对象的私有成员 2、public 对于成员来说谁都可以访问 类前有public则说明工程中谁都可以用它来定义类变量 (但要import该类,import 包名.类名(但不能是附类)。如果不用import,则可以使用“包名.类名”来使用类。 import 包名.*是把包内所有文件都拿过来 ), 但一个class文件只能有一个public类。类前没有public则只能在本包里起作用。 3、不写的话就是friendly 位于同一个包的其它类可以中可以通过对原创 2020-09-25 10:19:26 · 165 阅读 · 1 评论 -
Java基础-10、文件与类结构(包管理)
1、文件 一个包(new java project)里可以放好几个class(new class),每个class里要有一个public类与class同名(称为主类),其它附类供主类用(附属类不能用public)。主类也可以用其它主类(毕竟在一个包里),但不能用其它主类的附类。 有点乱 一个工程里两个类,一个display,一个clock.两个都有main,打开谁执行谁 2、类结构 成员变量可为public或private 成员函数也是。 一个class文件要想执行,主类中必须有public static原创 2020-09-25 10:19:10 · 183 阅读 · 0 评论 -
Java基础-8、字符串的操作
1、equas判断两个字符串是否相同 String a="abc"; String b="abc"; System.out.println(a.equals(b)); 2、length()求字符数(为成员函数,数组的len是成员变量) String a="abcd"; String b="abc"; String c=""; String d; System.out.println(a.length());//4 System.out.println(b.length()原创 2020-09-23 22:18:20 · 139 阅读 · 0 评论 -
Java基础-7、math类与字符串类(关于Java空间管理的思考)
一、Math类(第一个字母大写表示类,不是基本类型) abs(a):求绝对值 round(a):四舍五入(除号直接舍弃小数部分) random():产生0-1的随机数,数乘和加减之后可以转到其它区间随机数 pow(a,b):求a的b次方 二、字符串类String next(只读一个词,输入一行中两个单词用空格隔开,只读入第一个单词) nextline(输入一整行再回车就行了) 基本数据类型定义了就有空间,可以往里面放值。 但引用类型必须借助new才能去管理一个对象的空间。(C++可以直接定义一个对象,对象名原创 2020-09-23 21:41:07 · 99 阅读 · 0 评论 -
Java基础-6、字符类型、逃逸字符、包裹类型
1、Java使用Unicode来表示字符,可以表达汉字在内的多种文字。 占2个字节,使用单引号表示。(不出现单引号不能叫字符) 一个单引号中只能有一个字符(汉字、符号等) char a='a'; 前面的字符值与ASCII一致,后面是扩充的 2、字符的加减运算(一般指ASCII那一部分)结果为整型 字符+整数=间隔整数的下面的字符。(结果类型为整型) 字符-字符。结果类型为整型。 char c=65;//c='A'整型可以隐式类型转换为字符 ASCII要点: 48->‘0’ 65->‘A’ 97-原创 2020-09-23 20:32:00 · 509 阅读 · 0 评论 -
Java基础-5、数组与二维数组
1、定义一个数组 int[] arrayName=new int[100];//new出来数组元素默认值是0,不用专门去初始化 int[] scores={2,3,4,6,7};//也可以不用new,而是直接初始化 创建时必须指定类型。 大小可以是变量,但创建后大小不能改变。 Scanner in=new Scanner(System.in); int c=in.nextInt(); int[] numbers=new int[c];//数组大小可以是变量,比cpp牛皮 Java运行时会为原创 2020-09-23 14:35:56 · 62 阅读 · 0 评论 -
Java基础-4、boolean
boolean的值只能是true或false if(…) while(…) 逻辑运算 中只能使用逻辑量,01不是逻辑量,区分很大。原创 2020-09-22 23:33:13 · 92 阅读 · 0 评论 -
Java基础-3、判断与分支
1、Java中没有elif,与之等价的是else if if();//if语句只有大括号里面才加;,如果在if后面加,编译器都不警告你,慢慢调去吧。 if的判断括号里只能放Boolean类型,如果不慎用了=,编译器会警告的(这与cpp不同,Java太友好了) 2、当有很多级联,且判断条件都是==,则可以用switch case 来代替级联。 public static void main(String[] args) { // TODO Auto-generated method stub Scan原创 2020-09-23 13:05:06 · 387 阅读 · 0 评论 -
Java基础-2、浮点数、类型转化、关系运算及优先级
1、整数与整数运算结果一定是整数(去尾) 2、整数与浮点数运算结果一定是浮点数 public static void main(String[] args) { // TODO Auto-generated method stub int c; Scanner in=new Scanner(System.in); c=in.nextInt(); int f; f=(int)((c-32)*(5.0/9));//华氏温度转化为摄氏温度 System.out.println(f);原创 2020-09-22 19:57:00 · 868 阅读 · 0 评论 -
Java基础-1、数据类型与输入输出
1、输入输出方法: double a; Scanner in=new Scanner(System.in);//定义输入对象 a=in.nextDouble();//输入为double型的成员函数 System.out.println(a);//调用输出函数 int b; b=in.nextInt();//输入为int的成员函数 System.out.println(b);//调用输出函数 in.close();//关闭这个对象(我暂时不知道为什么要关闭) 想输入要定义输入对原创 2020-09-22 17:14:47 · 322 阅读 · 0 评论