精华内容
下载资源
问答
  • Java8编程实战

    万人学习 2016-12-31 18:03:03
    Java一直作为优秀的编程语言活跃于软件开发行业,掌握Java不仅是一件兴奋的事,更是一把可以帮助你轻松进入软件行业大门的一把金钥匙,本套课程将为读者讲解Java8的所有核心技术知识,一共240集的Java8开发课程,...
  • 2020年支持java8的Java反编译工具汇总

    万次阅读 多人点赞 2018-06-29 10:58:53
    luyten是一款操作简单、功能实用的java反编译工具,软件支持*.JAR、*.zip、*.class等类型文件的反编译操作,还原度非常高,支持更多功能设置,如显式导入、类型、合成组件等等,用户可根据不同的需求选择合适的显示...

         大多商业软件,会对程序进行加密、加壳等安全措施以防范软件被破解,从而使得反编译越来越难。反编译是一个对目标可执行程序进行逆向分析,从而得到源代码的过程。尤其是像Java这样的运行在虚拟机上的编程语言,更容易进行反编译得到源代码。

          我们知道,在代码支撑方面,JDK 1.7引入了字符串Switch、泛型接口改进等新功能,1.8增加了lambda表达式、方法传递、多重注解等新特性,这使得反编译工具的编写难度加大。今天我们盘点一下目前仍然可用的、相对功能很强大的Java反编译工具(Eclipse插件不做评价),比较老的反编译工具很难支持Java8及其以上版本。

     

    1、Java 反编译器 JD-GUI

    JD-GUI 是一个用 C++ 开发的 Java 反编译工具,由 Pavel Kouznetsov开发,支持Windows、Linux和苹果Mac Os三个平台。而且提供了Eclipse平台下的插件JD-Eclipse、IntelliJ的插件JD-IntelliJ。JD-GUI不需要安装,直接点击运行,可以反编译jar,class文件。

    最新版本1.4.0,官方网站:http://jd.benow.ca/

     

    2、Java 反编译器 procyon-decompiler及其window下独立UI工具luyten

         Procyon-Decompiler支持JDK1.8类的反编译,在很多方面做得非常不错,如反编译匿名类、内部类、Java8 Lambda等等。Procyon-Decompiler支持JDK1.8类的反编译,在很多方面做得非常不错:字符串的Switch、枚举声明方面、注解方面、匿名类、内部类、Java8新接口规范、Java8 Lambda表达式、Java8 方法传递等。

          luytenProcyon的GUI,是一款操作简单、功能实用的java反编译工具,软件支持*.JAR、*.zip、*.class等类型文件的反编译操作,还原度非常高,支持更多功能设置,如显式导入、类型、合成组件等等,用户可根据不同的需求选择合适的显示项目,结果更明了。

         luyten的最新版本0.53,官方网址:https://github.com/deathmarine/Luyten,只需要下载luyten即可,不用下载ProcyonProcyon最新版本0.5.30。

     

    3、Android反编译gui工具Jadx

         jadx是一款Android反编译gui工具,它支持apk、dex、jar、class、zip、aar等文件。jadx操作方便,反编译后的代码可读性高,同时还拥有较完善的gui界面,除去混淆部分的代码,jadx已经非常接近源代码了。

       Jadx最高版本v0.7.1,官方地址https://github.com/skylot/jadx/

       三个工具中JD-GUI打开jar文件反编译速度飞快、luyten次之、Jadx最慢(有时候需要等好一会,喝杯咖啡先。三者都会遇到反编译不出来的情况,建议配合使用。

    展开全文
  • Java关键字(Java 8版本)

    万次阅读 多人点赞 2019-09-28 22:11:04
    定义 被Java语言赋予了特殊含义,用作专门...Java关键字(Java 8版本) Java关键字(Java 8 以后版本) 注意事项 true,false和,null看起来像关键字,但它们实际上是文字; 您不能在程序中将它们用作标识符。 ...

    定义

    • 被Java语言赋予了特殊含义,用作专门用途的字符串(单词),这些关键字不能用于常量、变量、和任何标识符的名称。

    Java关键字(Java 8版本)

    Java关键字(Java 8版本)

    Java关键字(Java 8 以后版本)

    在这里插入图片描述

    注意事项

    • true,false和,null看起来像关键字,但它们实际上是文字; 您不能在程序中将它们用作标识符。
    展开全文
  • Java8零基础入门视频教程

    万人学习 2016-09-29 14:23:29
    这门课程基于主流的java8平台,由浅入深的详细讲解了java SE的开发技术,可以使java方向的入门学员,快速扎实的掌握java开发技术!
  • 采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集一般的javaList 交、并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的javaList对象,采用java8 lambda表达式流操作则可以不影响原始...

    采用java8 lambda表达式 实现java list 交集/并集/差集/去重并集

    一般的javaList 交、并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的javaList对象,采用java8 lambda表达式流操作则可以不影响原始list对象而得到两个javaList对象的 交、并、差集。

    2020-03-27 请查看新版本测试代码!!:
    https://blog.csdn.net/gzt19881123/article/details/105150375

    具体代码如下:

    
    import static java.util.stream.Collectors.toList;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Test {
    
        public static void main(String[] args) {
            List<String> list1 = new ArrayList();
            list1.add("1111");
            list1.add("2222");
            list1.add("3333");
    
            List<String> list2 = new ArrayList();
            list2.add("3333");
            list2.add("4444");
            list2.add("5555");
    
            // 交集
            List<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(toList());
            System.out.println("---得到交集 intersection---");
            intersection.parallelStream().forEach(System.out :: println);
    
            // 差集 (list1 - list2)
            List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(toList());
            System.out.println("---得到差集 reduce1 (list1 - list2)---");
            reduce1.parallelStream().forEach(System.out :: println);
    
            // 差集 (list2 - list1)
            List<String> reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(toList());
            System.out.println("---得到差集 reduce2 (list2 - list1)---");
            reduce2.parallelStream().forEach(System.out :: println);
    
            // 并集
            List<String> listAll = list1.parallelStream().collect(toList());
            List<String> listAll2 = list2.parallelStream().collect(toList());
            listAll.addAll(listAll2);
            System.out.println("---得到并集 listAll---");
            listAll.parallelStream().forEach(System.out :: println);
    
            // 去重并集
            List<String> listAllDistinct = listAll.stream().distinct().collect(toList());
            System.out.println("---得到去重并集 listAllDistinct---");
            listAllDistinct.parallelStream().forEach(System.out :: println);
    
            System.out.println("---原来的List1---");
            list1.parallelStream().forEach(System.out :: println);
            System.out.println("---原来的List2---");
            list2.parallelStream().forEach(System.out :: println);
    
    		// 一般有filter 操作时,不用并行流parallelStream ,如果用的话可能会导致线程安全问题
    
        }
    }
    
    
    展开全文
  • JAVA 8 '::' 关键字

    万次阅读 多人点赞 2018-06-05 16:07:08
    Java 8 中我们可以通过 `::` 关键字来访问类的构造方法,对象方法,静态方法。现有一个类 Somethingclass Something { // constructor methods Something() {} Something(String something) { System.out....

    Java 8 中我们可以通过 `::` 关键字来访问类的构造方法,对象方法,静态方法。

    现有一个类 Something

    class Something {
    
        // constructor methods
        Something() {}
    
        Something(String something) {
    	System.out.println(something);
        }
    
        // static methods
        static String startsWith(String s) {
            return String.valueOf(s.charAt(0));
        }
        
        // object methods
        String endWith(String s) {
            return String.valueOf(s.charAt(s.length()-1));
        }
        
        void endWith() {}
    }

    如何用 '::' 来访问类Something中的方法呢?先定义一个接口,因为必须要用 functional interface 来接收,否则编译错误(The target type of this expression must be a functional interface)

    @FunctionalInterface
    interface IConvert<F, T> {
        T convert(F form);
    }

    (@FunctionalInterface 注解要求接口有且只有一个抽象方法,JDK中有许多类用到该注解,比如 Runnable,它只有一个 Run 方法。)

    观察接口 IConvert,传参为类型 F,返回类型 T。所以,我们可以这样访问类Something的方法:

    访问静态方法

    // static methods
    IConvert<String, String> convert = Something::startsWith;
    String converted = convert.convert("123");
    		

    访问对象方法

    
    // object methods
    Something something = new Something();
    IConvert<String, String> converter = something::endWith;
    String converted = converter.convert("Java");

    访问构造方法

    
    // constructor methods
    IConvert<String, Something> convert = Something::new;
    Something something = convert.convert("constructors");

    总结:我们可以把类Something中的方法static String startsWith(String s){...}、String endWith(String s){...}、Something(String something){...}看作是接口IConvert的实现,因为它们都符合接口定义的那个“模版”,有传参类型F以及返回值类型T。比如构造方法Something(String something),它传参为String类型,返回值类型为Something。注解@FunctionalInterface保证了接口有且仅有一个抽象方法,所以JDK能准确地匹配到相应方法。



    展开全文
  • Java8新特性

    千人学习 2019-08-05 21:23:13
    Java8发布到现在至少3年了,但是对Lambda表达式不熟悉、看不懂、不会用的现象非常常见。 即使是升级到JDK1.8了,但是很多开发者依然是停留在1.8之前的开发方式,使用的也是非常老旧和过时的API,遇到函数式接口也是...
  • Java 14 都快来了,为什么还有这么多人固守Java 8

    万次阅读 多人点赞 2020-01-02 08:47:00
    Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
  • java基础之java7与java8的区别

    万次阅读 2019-01-07 15:25:33
    一、lambda表达式,java8版本引入的一个新特性。lambda表达式允许将功能当作方法参数或代码当作数据。lambda标识还可以更简洁的方式表示只有一个方法的接口(函数式接口)的实例。 二、方法引用,为已命名的方法提供...
  • Java8 Stream分割list集合

    万次阅读 2020-03-04 22:43:37
    使用Java8 Stream分割list集合,写好的工具类,可以直接用 package com.example.java8; import com.example.excel.Student; import org.apache.commons.collections4.CollectionUtils; import java.util.ArrayList...
  • JAVA8 BiConsumer 接口

    万次阅读 多人点赞 2018-06-23 10:44:00
    这个接口跟《JAVA8 Consumer接口》很像,表达的想法也是一致的,都是消费的意思,我们先看下接口定义 @FunctionalInterface public interface BiConsumer<T, U> { void accept(T t, U u); /**本接口中...
  • Java 8 Streams filter

    万次阅读 2017-07-30 08:54:12
    在这篇教程中,我们将用少量的例子向你展示java8中的Streams filter(), collect(), findAny() and orElse().Streams filter() 和 collect()Java 8之前, 过滤一个集合是这样的 :BeforeJava8.java package ...
  • Java8与JDK1.8与JDK8的区别是什么? Java是面向对象的编程语言,在我们开发Java应用的程序员的专业术语里,Java这个单词其实指的是Java开发工具,也就是Java Development Kit。所以我们常常在CSDN等各大程序员论坛...
  • Java8与JDK1.8与JDK8之间的关系是什么?

    万次阅读 多人点赞 2019-09-21 16:35:04
    1.Java8等价于JDK8 2.JDK8或者JDK1.8是由于自从JDK1.5/JDK5命名方式改变后遗留的历史问题。所以JDK8或者JDK1.8是等价的
  • 听说Java8和java11要收费了?程序员还有没有活路了

    万次阅读 多人点赞 2018-10-02 02:52:33
    9月20多号Oracle发布了java 11,同时也发布后续更新策略 突然发现,诶,java 11是收费的,诶,java 8好像也要收费了呢 那这是怎么收费的呢? 我查了一些资料,和一些...java8 Oracle jdk 授权使用BCL协议 具体...
  • 1.问题背景 最新要使用 Android Studio中的UI Automator ...所以博主我需要重新覆盖安装到Java8。 2.方法步骤 (1)在Oracle官网下载最新版本的Java8(可能需要科学上网) Oracle官网下载最新版本Java8的网站:https...
  • Java List去掉重复对象Java8

    万次阅读 2018-07-20 10:50:18
    一、去除List中重复的String Set&lt;String&gt; set = new LinkedHashSet&lt;&gt;(); set.addAll(list);...或使用Java8的写法: List&lt;String&gt; list = list.stream().distinc...
  • java8 LocalTime DateTimeFormatter 时间加秒 时间间隔 时间加几秒 import java.time.LocalTime; import java.time.format.DateTimeFormatter; public class TestZD { public static String ...
  • Ubuntu 16.04 Java8 安装

    万次阅读 2017-10-18 00:30:37
    添加ppasudo add-apt-repository ppa:...sudo apt-get update安装oracle-java-installersudo apt-get install oracle-java8-installer设置系统默认jdksudo update-java-alternatives -s java-8-oraclejava安装测试jav
  • Java8 实战系列-01-序章

    万次阅读 2018-03-02 16:14:27
    Java8 实战系列-01-序章 Java8 实战系列-02-lambda 表达式简介 Java8 实战系列-03-lambda 表达式实战 Java8 实战系列-04-lambda 内置函数 Java8 实战系列-05-lambda 类型推断 Java8 实战系列-06-lambda 方法...
  • Java 8 Streams map()

    万次阅读 2017-07-30 10:12:30
    java8中, stream().map()可以让你转化一个对象成其他的对象。下面我们通过下面的例子来看一下:String集合字符串转为大写TestJava8.java package com.ricky.java8;import java.util.ArrayList; import java.util....
  • ubuntu16.04下安装Java8详细教程

    万次阅读 多人点赞 2018-10-06 10:33:19
    首先在Oracle官网下载java8的linux-64安装包:jdk-8u181-linux-x64.tar.gz (1) 将安装包拷贝到/opt目录下 ​ sudo cp jdk-8u181-linux-x64.tar.gz /opt (2) 在/opt目录下创建java目录,并且将所有权限更改为当前...
  • java8 stream filter 简单使用

    万次阅读 2019-04-12 12:50:44
    java8 stream filter 简单使用 如下代码: public static void main(String[] args) { // 存储0-9的列表 List<Integer> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { ...
  • JAVA8 Consumer接口

    万次阅读 多人点赞 2018-06-08 09:52:17
    java8 stream接口终端操作 count,anyMatch,allMatch,noneMatch》 《java8 srteam接口终端操作reduce操作》 《java8 stream接口 终端操作 collect操作》 4.其他部分 《java8 Optional静态类简介,...
  • java8中Collectors类中的tomap方法提供了我们将数据转换成Map的封装,往往在我们应用2个参数的(我们声明Key和Value很直接如下图)前提是key不能重复 若有重复的key会直接报下面 key重复的异常; java.lang....
  • java 8 循环操作List/Map

    万次阅读 多人点赞 2016-09-19 16:39:15
    package com.ven.java8.foreach; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import com.ven.java8.method.references.CreateFactory; /** *
  • ubuntu14.04 安装Java8 (JDK8)

    万次阅读 2017-04-13 15:08:13
    目前腾讯云服务器 Ubuntu 14.04 系统用 sudo apt-get install default-jdk 安装的JDK还是 java 7的,会导致一些对于需要Java 8 支持的一些应用无法编译或者运行,所以,目前还需要自己手动安装 JDK8 步骤如下 1...
  • Java 8 Stream Collectors groupingBy 示例

    万次阅读 2017-06-18 11:51:59
    展示如何使用Java 8 Stream Collectors进行分组,计数,总和和排序List ...Java8Example1.java package com.mkyong.java8; import java.util.Arrays; import java.util.List; import java.util.Map;
  • Java8深入分析

    万人学习 2016-09-29 15:01:32
    Java语言进阶视频教程,该课程针对有一定Java基础的学员,详细讲解Java多线程、XML、Socket、Swing、IO流、反射、注解,还有传值与传址的区别 、递归算法等,使学员熟练掌握JavaSE技术,轻松应对职场挑战。
  • Java8 Date与LocalDate互转

    万次阅读 2018-06-28 19:09:41
    Java8 日期时间API,新增了LocalDate、LocalDateTime、LocalTime等线程安全类,接下来要说的是LocalDate与java.util.Date之间的转换。1、LocalDate不包含时间,描述的是日期,如果对时间不关心,可以使用LocalDate2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,072,549
精华内容 5,629,019
关键字:

java8

java 订阅