Java基础
Java基础知识
Bella_chene
努力学习中的编程小白
展开
-
java中 IO流的学习
http://blog.csdn.net/zhaoyanjun6/article/details/54292148转载 2020-09-17 08:53:20 · 170 阅读 · 0 评论 -
多线程(并发执行)
一、概念区分1、并行与并发并行 当系统有一个以上CPU时,同一时刻,当一个CPU在执行一个任务时,另一个CPU在执行另一个任务,两个任务互不抢占CPU资源,可以同时进行(多核CPU,一个CPU执行一个进程)并发 一个CPU,同一时间,有多个任务在执行。但并发不是真正意义上的“同时进行”,只是将CPU划分成好几个时间片段,每个片段内执行一个任务,然后在这几个片段之间来回切换,由于CPU处理速度快,让用户感觉像是多个任务在同时执行。区别:并行是某一时刻,真正有多个程序在运行;并发是在一段时原创 2020-08-02 15:06:54 · 13705 阅读 · 0 评论 -
Java中字符串的比较与char类型的比较
char类型使用==字符串类型使用equals(==比较字符串是否引用同一地址,如果2个字符串是同一个对象,那可以用==,如果不是同一个对象,只是比较内容是否一致,则不可以用==)...原创 2018-09-07 15:38:49 · 27741 阅读 · 1 评论 -
Java 调用 MySQL的存储过程
第一步:建立数据表:(前面已经写了基础的数据库与数据表操作,这里不再给出如何创建student和teacher数据表)第二步、在该数据表中创建存储过程如下:delimiter // ---定义结束符create procedure stu_pro(in id int, out name varchar) ----存储过程名字和参数begin ----存储过程开始se...原创 2019-09-21 15:32:43 · 694 阅读 · 0 评论 -
Java的API查询方式
Java的API查询方式此地址的线上API是将所有的包归类到一起的1、线上中文API文档地址:https://www.matools.com/api/java82、左上角是:所有的 java 包 左下角是:所有的 java 类、接口3、点击其中某一个包,左下角会显示该包内的所有类与接口,然后点击左下角要查询的类或接口,右侧大屏会显示该接口或类的所有信息。首先显示该类所属的所有包,类的一些介绍等。其次是该类里包含的所有静态变量、构造方法、所有方法(静态方法、接口方法、具体方法)原创 2020-05-14 10:47:27 · 1866 阅读 · 0 评论 -
Java中的表达式类型自动提升
Java中的表达式类型自动提升java默认输入的整型为Int类型,如果在byte(-128+127)、short(-32768+32767)可表示的范围之内,则默认进行自动类型转换,如byte s1=3; //右侧的3默认是int型,但是3在byte可表示的范围之内,因此可以自动转换,不出错short s2=27386; //右侧的27386默认是int型,但是27386在short可表示的范围之内,因此可以自动转换,不出错但是:byte s1=5;s1=s1-2;会出错。因此表达原创 2020-05-14 10:48:10 · 564 阅读 · 0 评论 -
java中的++与--运算符
java中的++与–运算符1、++自加2、–自减注意:(1)运算符出现在变量的左边,则先对变量进行加/减1,然后带入表达式进行计算(2)运算符出现在变量的右边,则先将变量带入表达式中进行计算,然后再对变量进行加/减1public static void main(String[] args) throws NumberFormatException{ int a=1; int b=a++ + 1; System.out.println(a); //2,因为a自加了 System原创 2020-05-14 10:48:40 · 649 阅读 · 1 评论 -
Java中的移位运算符
Java中的移位运算符1、<< 左移运算符:将二进制码整体左移指定位数n,左移后右边空出来的位全补0(相当于乘以2的n次方)2、>> 右移运算符:将二进制码整体右移指定位数n,右移后左边空出来的位以原来的符号位填充(正数补0、负数补1)--------不改变数的正负,只改变数的大小(相当于除以2的n次方)3、>>> 无符号右移运算符:将二进制码整体右移指定位数n,右移后左边空出来的位全部补0---------可能会改变数的正负(负数变为正数)publ原创 2020-05-14 10:50:39 · 107 阅读 · 0 评论 -
Java中的==和equals的用法
Java中的==和equals的用法1、字符串应用字符串重写了equals方法,在两个字符串的比较中,equals就是比较这两个字符串中的值是否相等,不管其他。==是判断这两个字符串在堆内存中的地址是否相同,而不单纯的是值是否相同public class t { public static void main(String[] args) throws NumberFormatException{ String s1="hello"; String s2="hello"; Stri原创 2020-05-14 10:51:56 · 159 阅读 · 0 评论 -
Java中的&与&&
Java中的&与&&1、&& 短路与,先计算左边的表达式,如果左边为false,则直接返回false,不会计算右边的表达式。只有左边表达式为true时,才会计算右边的表达式。& 不短路与,永远都会计算左右两个表达式public static void main(String[] args){ int a=2; int b=6; if(a>3 && b++>6) { System.out.println("原创 2020-05-14 10:52:49 · 214 阅读 · 0 评论 -
Java中将基本类型转换为Sting类型的方法
Java中将基本类型转换为Sting类型的方法1、+“” :在其余类型后加上双引号即可2、String类型中的valueOf方法注意:在js中可以采用toString()方法来转换,但是Java中不行,因为java中的toString 方法是返回一个对象的字符串表示方式,并在基本类型是不能使用toString()方法的。public class t { public static void main(String[] args){ int a=23; String str1=a+"";原创 2020-05-15 08:51:52 · 163 阅读 · 0 评论 -
Java方法的参数传递机制
Java方法的参数传递机制java中方法的参数传递方式只有一种:值传递。就是将实际参数的副本(复制品)传入方法中,其本身不会受到影响。1、普通变量的传递public class t { public static void swap(int a,int b) { int temp=a; a=b; b=temp; System.out.println("swap()方法中a的值为:"+a+",b值为:"+b); } public static void main(String[]原创 2020-05-15 10:25:56 · 147 阅读 · 0 评论 -
Java三大特性之封装
封装(Encapsulation)是指将对象的状态信息隐藏在对象内部,不允许外部对象直接访问对象的内部信息,而是通过其提供的方法来实现对内部信息的操作与访问。1、访问控制符**private(当前类访问权限):**只有自己的类可以访问default(包访问权限):同一个包中的类可以访问protected(子类访问权限):自己及其子类可以访问public(公共访问权限):任何类都可以访问对于一个java源文件,如果里面所有的类都没有使用public修饰,则该类可以是任何合法的文件名;但是如果原创 2020-05-16 11:38:12 · 76 阅读 · 0 评论 -
Java的方法、构造器重载
1、方法重载java中运行同一个类里,定义多个同名方法,只要形参列表不同即可。规则:两同一不同(无其他要求,比如返回值、修饰符等均可相同或不同)同一个类中方法名相同形参列表不同(形参个数不同、形参类型不同)public class t { public void test() { System.out.println("无参方法"); } private void test(int n) { System.out.println("有一个参数的方法:"+n); } priv原创 2020-05-16 11:38:40 · 126 阅读 · 0 评论 -
Java方法重载与方法重写
1、方法重载(@overload)java中,同一个类中出现了相同名字的方法,称为方法重载。规则:两同一不同(无其他要求,比如返回值、修饰符等均可相同或不同)同一个类中、方法名相同形参列表不同(形参个数不同、形参类型不同)在java重载一文中有详细介绍。2、方法重写(@override)java中,子类中包含与父类同名的方法,称为方法重写。规则:两同两小一大方法名相同、形参列表相同子类方法的返回值类型需小于等于父类方法的返回值、子类声明抛出的异常需小于等于父类声明抛出的异常子类方原创 2020-05-16 11:39:16 · 301 阅读 · 0 评论 -
Java中的super关键字
使用super关键字来访问java中的父类成员。super像this一样,不能出现在static修饰的方法中。1、调用父类的实例方法如果子类重写了父类的方法,此时需要访问该父类方法,则需使用super限定。class Base{ //父类方法 public void info() { System.out.println("Hello world"); }}class Sub extends Base{ //方法重写 public void info() { System.ou原创 2020-05-18 10:49:22 · 136 阅读 · 0 评论 -
Java继承与组合的异同
1、定义继承:子类可以获得父类的public方法,程序使用子类时,将可以直接访问该子类从父类那里继承到的方法。组合:把旧类的对象作为新类的成员变量组合进行,用以实现新类的功能,用户看到的是新类的方法,而不能看到 被组合对象的方法2、相同点与不同点相同点:都是实现类复用的重要手段不同点:继承可使变量具有多态性、组合则不具备这种多态的灵活性继承会破坏父类的封装性、组合则不会3、举例适合使用继承的例子://使用继承手段:class Person{ private void beat()原创 2020-05-19 08:39:48 · 310 阅读 · 0 评论 -
Java的初始化块
1、初始化块就是所有构造器中相同语句构成的一段代码。它在创建java对象时隐式执行,而且在构造器之前执行。2、java源程序编译时,会将初始化块的代码“还原”到每一个构造器中,并且位于构造器所有代码的前面。3、初始化块只有一个修饰符static,用来表示该初始化块是否是静态初始化块。4、在整个类初始化过程中:首先执行静态初始化块,此时不仅仅只执行本类的静态初始化块,还会一直上溯到java.lang.Object类,先执行java.lang.Object类的静态初始化块,然后执行其父类的静态初始化块,最原创 2020-05-19 10:18:52 · 318 阅读 · 0 评论 -
JAVA中的包(持续更新)
//输入语句Scanner input=new Scanner(System.in);int a=input.nextInt();导入输入语句的包:import java.util.Scanner;//产生[0,n)之间的随机数Random input=new Random();int a=input.nextInt(n);导入随机数的包:import java.uti...原创 2018-09-15 14:55:41 · 240 阅读 · 0 评论 -
java中println与print的区别
print默认不换行输出println默认换行输出要想一行中输出两个数据,用空格隔开,则使用print("\t")来实现例如九九乘法表的输出:package myjava;public class myone { public static void main(String[] args){ int i; int j; fo...原创 2018-09-07 16:43:35 · 8299 阅读 · 0 评论 -
Java中的final修饰符
final可以修饰类、方法、变量,用来表示这些东西都不可再变1、修饰成员变量:必须程序员显式地指定初始值类变量:声明该变量时指定初始值、静态初始化块中指定初始值(二者选其一)实例变量:声明该变量时指定初始值、非静态初始化块中指定初始值、构造器中指定初始值(三者选其一)宏变量效果:对于final修饰的实例变量来说,如果在定义该变量时就指定初始值,那么这个变量就有了“宏变量”的效果。public class Test{ //实例变量 final int a=1; //声明变量时指定初始值原创 2020-05-19 14:16:20 · 112 阅读 · 0 评论 -
Java的不可变类
1、定义:如果一个类创建实例后,该实例的实例变量不可以改变,那么这个类就是不可变类。2、创建方式:(1)使用private和final修饰符来修饰该类的成员变量(2)提供带参数的构造器,通过传入的参数来初始化该类中的成员变量(3)仅为该类提供getter方法,而不提供setter方法(4)如果有必要,重写该类的hashCode()和equals()方法,正常情况下,用equals()判断两个对象相等,那么这两个对象的hashCode()也相等3、例子class Address{ //将实例变原创 2020-05-22 10:29:22 · 232 阅读 · 0 评论 -
String与StringBuffer与StringBuilder之间的差异
1、相同点:String、StringBuffer、StringBuilder三个类都是用来封装字符串的2、不同点:String类是不可变类,即一旦一个String对象被创建后,包含在这个对象中的字符串是不可以改变的StringBuffer对象代表一个字符序列可变的字符串StringBuilder也代表一个可变字符串对象,与StringBuffer相比,StringBuilder是线程不安全的,而StringBuffer是线程安全的3、方法:(1)String类中主要的方法:char原创 2020-06-01 09:19:58 · 108 阅读 · 0 评论 -
正则表达式
1、作用:字符串处理工具(是一个用于匹配字符串的模板,可以匹配一批字符串)2、注意情况:(1)匹配特殊字符:如KaTeX parse error: Undefined control sequence: \等 at position 4: 、?、\̲等̲,需要先使用\将这些字符转义。…符合需要使用 \ $ ,而匹配\符号需要\ \(2)在Java中,两个\ \表示普通文本中的一个\,因为java中\本身就需要转义3、使用:导入 java.util.regex.Pattern 与 java.util原创 2020-06-04 16:46:02 · 102 阅读 · 1 评论 -
Java泛型
一、作用:记住java集合中元素的类型在不使用泛型时,任何元素被放入集合中,会自动当成Object类型处理,当从程序中取出元素时,往往需要强制类型转换,这种转换不仅会代码臃肿,还容易引起CastClassException异常。import java.util.List;import java.util.ArrayList;public class Test { public static void main(String[] args) { List str=new ArrayList();原创 2020-06-25 14:23:12 · 120 阅读 · 0 评论 -
Java集合之Map
一、HashMap类,类似于ArrayList类1、允许使用null作为key或value的值;但是key只能有一个null,因为key值不可以重复。但是value可以有多个nullimport java.util.HashMap;public class HashMapTest { public static void main(String[] args) { HashMap hm=new HashMap(); //添加一个均为null的key-value对 hm.put(null,原创 2020-06-04 16:57:52 · 103 阅读 · 0 评论 -
Java集合之Queue
Queue接口:模拟队列这种数据结构。队列是指“先进先出”(FIFO)的容器。offer()、add():将指定元素加入队列尾部peek()、element():取出队列头部的元素,但不删除这个元素poll()、remove():取出队列头部的元素,同时删除这个元素一、PriorityQueue类:是Queue的一个比较标准的实现类。1、储存元素的规则:并不是按照加入队列的顺序,而是按照队列元素的大小进行重新排序(类似于TreeSet)此时采用peek()或poll()方法取出队列元素时,并原创 2020-06-04 16:53:51 · 148 阅读 · 0 评论 -
Java集合之List
一、List接口:存放有序、可重复的元素。集合中每个元素都有一个索引,可以通过该索引来访问集合元素,类似于数组索引。1、List接口作为Collection的子接口,继承了Collection接口里的全部方法,同时增加了通过索引来操作集合元素的方法。2、List集合比Set集合多了一种遍历集合元素的方法:使用普通的for循环来遍历集合。import java.util.List;import java.util.ArrayList;public class ListTest { public s原创 2020-06-04 16:52:12 · 175 阅读 · 0 评论 -
Java集合之Set
Set接口:存放无序的、不可重复的元素。其与Collection接口基本相同,并没有提供额外的方法。一、HashSet类:按Hash算法来储存集合中的元素1、特点:不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也可能会发生变化HashSet不是同步的,如果多个线程访问同一个HashSet,则必须通过代码来保证其同步性集合元素可以是null2、储存算法:Hash算法(1)当向HashSet集合中添加一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashC原创 2020-06-04 16:51:02 · 110 阅读 · 0 评论 -
Java集合
两个重要接口:Collection Map一个重要的包:java.util.*;一、Collection接口:用来存放普通数据(Set、Queue、List)(1)集合中可以包含任何类型的数据,但数组就不行,只能包含同一种数据(2)Collection接口重写了toString()方法,默认输出[ele1,ele2,…]import java.util.ArrayList;import java.util.Collection;public class SetTest { publi原创 2020-06-04 16:48:38 · 99 阅读 · 0 评论 -
Java的Scanner类
1、作用:用来获取用户的键盘输入(需要导入:import java.util.Scanner;)2、方法:(1)判断是否还有数据:hasNext():判断是否含有下一个字符串hasNextXxx():其中Xxx可以是int、long等代表基本数据类型的字符串hasNextLine():判断输入中是否还有下一行(2)获取下一个数据:next():返回输入中下一个字符串nextXxx():返回输入中下一个类型为Xxx的数据nextLine():返回输入中下一行字符串(3)设置分隔符:原创 2020-06-01 09:19:21 · 167 阅读 · 0 评论 -
Java中的枚举类
1、定义:一个类的实例有限而且固定的类,称这个类为枚举类2、关键字:enum3、与普通类的区别:(1)显示继承java.lang.Enum类,而不是java.lang.Object类。因此不能显示继承其他父类(2)非抽象的枚举类不能派生子类,如果是包含抽象方法的抽象枚举类则可以派生子类(3)构造器只能使用private修饰(4)枚举类的所有实例必须在第一行显示列出,否则这个枚举类永远都不能产生实例//定义一个枚举类enum Season{ Spring,Summer,Fall,Winner原创 2020-05-29 10:51:58 · 109 阅读 · 0 评论 -
Java的函数式接口
Java的函数式接口前面介绍了Lambda表达式,它所用的场所是创建只有一个抽象方法的接口的实例。这里**只有一个抽象方法的接口就是函数式接口。**如果一个接口包括两个及以上抽象方法,那么不能使用Lambda表达式,必须采用匿名内部类来创建这个接口的实例。因此只有函数式接口才可以写成Lambda表达式的形式:(1)将Lambda表达式赋值给函数式接口,如下所示:interface Convert{ Integer convert(String str);}public class test{原创 2020-05-29 10:51:19 · 115 阅读 · 0 评论 -
Java的Lambda表达式
Java的Lambda表达式1、使用方式:Lambda表达式支持将代码块作为方法参数,运行使用简单的代码来创建只有一个抽象方法的接口的实例使用一个完整的例子来阐述实现类、匿名内部类、Lambda表达式三者的优缺点。//方式一:使用实现类方式//定义一个接口interface Command{ //抽象方法,表示一种处理方式 void process(int[] target);}//定义一个类实现Command接口class PrintCommand implements Command原创 2020-05-29 10:50:30 · 116 阅读 · 0 评论 -
Java的内部类
1、定义:将一个类放在另一个类的内部定义,这个定义在内部的类就称为内部类。(包含这个内部类的类叫外部类)2、作用:(1)内部类可以提供更好的封装,将内部信息隐藏在外部类之内,使得同一个包中的其他类不可访问。也就说这个内部类只让外部类访问,不让其他的类访问(2)内部类可以访问外部类的数据,即使这个外部类的数据是用private修饰的都可以。但是外部类无法访问用private修饰的内部类的成员(3)匿名内部类用于创建只需要使用一次的类3、注意点:(1)内部类的修饰符可以是:public (公共访问)原创 2020-05-25 17:53:42 · 83 阅读 · 0 评论 -
Java中的接口
1、概念(1)接口定义了一种规范,定义了某一批类所需要遵守的规范(2)接口不关心类中具体的实现,只规定了这批类里必须提供某一些方法。(3)接口是从多个相似类中抽象出来的规范,接口不提供任何实现2、规则(1)不在使用class关键字,而是interface关键字(2)修饰符是public或省略,如果省略默认是包访问权限(3)一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类(4)接口中只能包含:成员变量(只能是静态常量)、方法(只能是抽象实例方法、类方法、默认方法、私有方法)、内部类原创 2020-05-25 10:57:07 · 354 阅读 · 0 评论 -
Java的抽象类
1、定义抽象方法:只有方法名字,没有具体方法实现的方法抽象类:有抽象方法的类即为抽象类2、规则(1)抽象方法和抽象类必须使用abstract修饰符来修饰(2)有抽象方法的类必须为抽象类、但抽象类里可以没有抽象方法(3)抽象类不可被实例化,无法使用new关键字调用抽象类的构造器来创建抽象类的实例。只能当做父类被其他子类继承,并且子类要实现里面的抽象方法(4)抽象类里可以有成员变量、方法(抽象方法和普通方法)、构造器、初始化块、内部类(接口、枚举)5种成分,其中构造器不能用于创建实例,只是用来原创 2020-05-22 10:30:32 · 216 阅读 · 0 评论 -
Java的单例类
1、定义:如果一个类只能创建一个实例,则这个类被称为单例类2、如何创建 ???(1)隐藏该类的构造器,即使用private修饰(2)提供一个static修饰的类方法,用来给外界创造这一个实例(3)保证只能创建一个实例(因此单例类中需要一个类变量来保存曾经创建的实例,以此来显示该类是否创建过实例)3、例子class Single{ //使用一个类变量来保存曾经创建的实例 private static Single instance; //使用private修饰该类的构造器 private原创 2020-05-22 10:27:19 · 280 阅读 · 0 评论 -
Java的this关键字
this关键字总是指向调用该方法的对象。this关键字不能出现在static修饰的方法中,因为由static修饰的方法属于类本身,而this指代的是一个实例。1、让类中的一个方法,访问该类中的另一个方法或实例变量class Dog{ //定义一个类变量 int age; //方法一 public void jump() { System.out.println("狗会跳"); } //方法二 public void run() { this.jump(); //在方法二中访问方法原创 2020-05-18 10:47:03 · 123 阅读 · 0 评论 -
Java中的修饰符
Java中的修饰符1、类修饰符:**public:**将一个类声明为公共类,他可以被任何对象访问,可以在任何其他类中使用。主程序所在的类必须是公共类(即main函数必须写在public类中),而且java的文件名与public修饰的类名必须保持一致,因此一个java文件中最多只能有一个public类。**abstract:**将一个类声明为抽象类,该类没有实现的方法,需要子类去提供方法去实现(即这种类必须被继承,否则没有意义)。**final:**将一个类声明为最终类,表示该类不可以在被原创 2020-05-15 10:23:51 · 193 阅读 · 0 评论