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 · 294 阅读 · 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 · 2729 阅读 · 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所以输出全为trueimport 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、Set2、HashSetHashSet<String> s=new HashSet<String>;s.add("aa");s.add("bb");s.add("aa");for(String k:s){ System.out.println(k);}//aa//bbset就是数学中的集合,不允许有重复元素,无序,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 · 166 阅读 · 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次方二、字符串类Stringnext(只读一个词,输入一行中两个单词用空格隔开,只读入第一个单词)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或falseif(…)while(…)逻辑运算中只能使用逻辑量,01不是逻辑量,区分很大。原创 2020-09-22 23:33:13 · 93 阅读 · 0 评论 -
Java基础-3、判断与分支
1、Java中没有elif,与之等价的是else ifif();//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 · 393 阅读 · 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 · 324 阅读 · 0 评论