Java
javs知识分享
菜又学
默默奋斗的小白。
展开
-
Java基础:Lock和synchronized基础
Lock(锁) try{ //加锁 lock.lock(); //代码块 }else { break; } }finally { //解锁 lock.unlock();原创 2022-05-28 20:58:47 · 298 阅读 · 0 评论 -
Java基础:多线程join()方法
join()让当前线程优先执行。JoinThread.javapublic class JoinThread implements Runnable{ @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("vip"+i); } }}Test.javaimport JavaBase.*;pub原创 2022-05-17 17:20:29 · 262 阅读 · 0 评论 -
Java基础:停止线程
不推荐使用JDK中的stop()和destory()方法,建议使用标志位flag=false让线程自己停下来。public class Test implements Runnable { private boolean flag = true; @Override public void run() { int i = 0; while (flag){ System.out.println("thread = " + i原创 2022-05-17 16:26:13 · 138 阅读 · 0 评论 -
Lamda表达式
避免内部类定义过度,实质是函数编程的概念。可以使用Lamda表达式的接口中必须只有一个方法。lambda 表达式的语法格式如下:(parameters) -> expression或(parameters) ->{ statements; }以下是lambda表达式的重要特征:1.可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。2.可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。3.可选的大括号:如果主体包含了一个语句,就不需要使用大转载 2022-05-17 15:34:27 · 7871 阅读 · 0 评论 -
Java基础:Callable
Callable具有返回值,抛出异常。import java.util.concurrent.Callable;public class TestCallable implements Callable { @Override public Boolean call() throws Exception { for (int i = 0; i < 5; i++) { System.out.println("Callable = " +原创 2022-05-16 19:28:09 · 6225 阅读 · 0 评论 -
Java基础:Thread和Runnable
Thread类1.自定义线程类继承Thread类2.重写run()方法,编写线程执行体3.创建线程对象,调用start()方法,启动线程public class TestThread extends Thread{ @Override public void run() { for (int i = 0; i < 5; i++) { System.out.println("i = " + i); } }原创 2022-05-16 16:04:14 · 664 阅读 · 0 评论 -
Java基础:string中的compareTo
public class Test{ public static void main(String args[]) { String foo = "ABC"; String bar01 = "ABC"; System.out.println(foo.compareTo(bar01));//前面和后面每个字符完全一样,返回 0 // 前面每个字符完全一样,返回:后面就是字符串长度差 String bar02 = .转载 2022-05-11 15:54:11 · 1452 阅读 · 0 评论 -
力扣:乘积最大子数组
给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个 32-位 整数。class Solution { public int maxProduct(int[] nums) { int res = nums[0]; int imax = nums[0]; int imin = nums[0]; for(int i=1; i<nu转载 2022-05-08 12:04:48 · 130 阅读 · 0 评论 -
java中Arrays.sort()
该方法是Arrays类的静态方法,默认对数组进行从小到大进行排序。1、Arrays.sort(int[] a)这种形式是对一个数组的所有元素进行排序,并且是按从小到大的顺序。import java.util.*;public class Test{ public static void main(String args[]) { int[] a = {9, 5, 7, 6, 3, 4, 1, 0, 2, 8}; Arrays.sort(a);转载 2022-05-07 23:37:45 · 540 阅读 · 0 评论 -
Java中的 |=、&=、^=
public class Test{ public static void main(String args[]) { int a1 = 5; // 0000 0101 int b1 = 3; // 0000 0011 a1 |= b1; // 0000 00111 System.out.println("|= "+a1); int a2 = 5; // 0000 0101 int b2 = 3...转载 2022-05-06 20:17:07 · 11598 阅读 · 1 评论 -
Ubuntu 18.04安装JDK1.8
下载链接https://www.oracle.com/java/technologies/downloads/#java8官网下载慢且需要注册,比较麻烦。https://download.csdn.net/download/qq_40378795/54997479tar -zxvf jdk-8u311-linux-x64.tar.gzvim /etc/profile把下面加到文件最后export JAVA_HOME=/root/test/jdk1.8.0_311export JRE_H原创 2021-12-03 22:54:10 · 957 阅读 · 0 评论 -
Java基础:简单的Runnable 接口创建线程
创建一个线程Java 提供了三种创建线程的方法:通过实现 Runnable 接口;通过继承 Thread 类本身;通过 Callable 和 Future 创建线程。为了实现 Runnable,一个类只需要执行一个方法调用 run(),声明如下:public void run()Thread 定义了几个构造方法,下面的这个是我们经常使用的:Thread(Runnable threadOb, String threadName);threadOb 是一个实现 Runn...转载 2021-11-25 16:27:57 · 638 阅读 · 0 评论 -
Java面试:Java中==与equals的区别
“==”比较的是两个引用在内存中指向的是不是同一对象(即同一内存空间),也就是说在内存空间中的存储位置是否相同。(引用类型)如果两个对象的引用指向同一内存空间,“==”操作符返回true,否则返回flase。public class Test { public static void main(String[] args) { String str1 = "abc"; String str2 = "abc"; System.out.printl原创 2021-11-03 16:07:53 · 105 阅读 · 0 评论 -
Java基础:Vector基本操作
Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:Vector 是同步访问的。Vector 包含了许多传统的方法,这些方法不属于集合框架。Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。Vector 类支持 4 种构造方法。第一种构造方法创建一个默认的向量,默认大小为 10:Vector()第二种构造方法创建指定大小的向量。Vector(int size)第三种构造...转载 2021-11-03 13:13:12 · 612 阅读 · 0 评论 -
Java基础:Stack基本操作
StackDemo.javaimport java.util.Stack;public class StackDemo { public void showpush(Stack<Integer> st, int a) { st.push(new Integer(a));//把添加到栈st中 System.out.println("push(" + a + ")"); System.out.println("stack: " + s转载 2021-11-01 22:59:14 · 374 阅读 · 0 评论 -
Java基础:ArrayList的增删改
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList ,并实现了 List 接口。 ArrayList<String> arr = new ArrayList<String>(); arr.add("a"); arr.add("b"); arr.add("c"); arr..转载 2021-10-28 21:03:19 · 2831 阅读 · 0 评论 -
Java基础:Java的优点和缺点
优点1、跨平台/可移植性是Java的核心优势之一, Java的运行是通过JVM来实现的,只需要在操作系统上安装对应的虚找机即可运行,节省代码重复编写时间。2、面向对象Java是完全的面向对象语言,非常适合大型软件的设计和开发。3、简单性Java去掉了头文件,指针,结构等内容,更加简单易学。4、分布式Java是为分布式环境设计的,它可以处理TCP/IP协议,其还支持远程调用。5、多线程Java多线程简单易用,使其成为了最主流的服务器端开发语言。6、健壮性Java原创 2021-10-28 08:25:20 · 2454 阅读 · 0 评论 -
Java基础:类型通配符加上限
应用场景:给泛型方法设置参数限制。GenericTestUp.javaimport java.util.List;public class GenericTestUp { public static void getUperNumber(List<? extends Number> data) { System.out.println("data :" + data.get(0)); }}Test.javapublic class转载 2021-10-22 13:00:21 · 158 阅读 · 0 评论 -
Java基础:泛型的类型通配符
应用场景:针对不同的参数,但有相同的处理方法,使用类型通配符。类型通配符一般是使用 ? 代替具体的类型参数。例如 List<?> 在逻辑上是 List<String>,List<Integer> 等所有 List<具体类型实参> 的父类。Test.javapublic class Test { public static void main(String[] args) { List<String> na转载 2021-10-22 12:18:24 · 109 阅读 · 0 评论 -
Java基础:泛型类的简单实现
泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。Test.javapublic class Test { public static void main(String[] args) { Generic<Integer> integerBox = new Generic<I转载 2021-10-22 09:16:17 · 214 阅读 · 0 评论 -
Java基础:泛型方法中有界的类型参数
应用场景:限制那些被允许传递到一个类型参数的类型种类范围。例如,一个操作数字的方法可能只希望接受Number或者Number子类的实例。这就是有界类型参数的目的。要声明一个有界的类型参数,首先列出类型参数的名称,后跟extends关键字,最后紧跟它的上界。MaximumTest.javapublic class MaximumTest { // 比较三个值并返回最大值 public static <T extends Comparable<T>> T转载 2021-10-22 08:43:48 · 335 阅读 · 0 评论 -
java基础:使用泛型方法输出Integer, Double 和 Character类型的数组
public class GenericMethodTest{ // 泛型方法 printArray public static < E > void printArray( E[] inputArray ) { // 输出数组元素 for ( E element : inputArray ){ System.out.printf(.转载 2021-10-21 08:42:45 · 1510 阅读 · 0 评论 -
Java基础:使用android studio轻松创建JNI项目
点击FileàNewàNew Project,选择Native C++,然后点击Next。如下图步骤1,2。进入该页面,修改项目名称,其他选项默认,点击Next,点击Next,点击Finish,完成创建JNI项目。查看项目目录结构手机调试,打开手机的USB调试,出现下面红线上出现手机名说明连接成功,点击手机名后面的绿色三角运行。手机上会提示安装,安装完成会出现下图界面。...原创 2021-10-18 16:21:59 · 1177 阅读 · 0 评论 -
Java 区间排序
public class Test { public static void main(String[] args) { //定义二维数组,存储区间 int[][] arr={{1,2},{2,3},{3,4},{1,3}}; Arrays.sort(arr,new Comparator<int[]>() { @Override public int compare(int[] o1,in.原创 2021-10-17 10:58:23 · 596 阅读 · 0 评论 -
Java基础:二维数组的定义和输出
//定义二维数组 int[][] arr={{1,2},{2,3},{3,4},{1,3}}; //输出二维数组 for(int x=0;x<arr.length;x++){ for(int y=0;y<arr[x].length;y++){ System.out.print(arr[x][y]); } System.out.p...转载 2021-10-16 11:42:18 · 2410 阅读 · 0 评论