参考:Java核心技术 卷I 基础知识 第十四章 多进程与多线程有哪些区别呢?本质的区别在于每个进程拥有自己的一整套变量,而线程则共享数据。 在许多情况下可以使用java.util.concurrent包中的一种机制,他会为你处理所有的加锁。
所以胖哥抽时间梳理了一下从Java 9到Java 17的一些常用API的变动。今天先来看看Java 9 都有什么东西。 Java 9 Java 9 最大的变化就是引入了一个JShell和模块化,日常并没有用太多,所以今天不花时间在这些功能上面。 Java 9改善了这一现状,现在你可以: // [1, 2, 3, 4] List<Integer> integers = List.of(1, 2, 3, 4); // {1,2,3} Set<Integer Stream扩展 Stream API 是Java 8中引入的最重要的特性之一。在Java 9中Stream进一步得到了加强。 总结 其实Java 9 还有一些底层的优化,不过对于普通开发者来说了解这些就够用了。上面几个特性,比较常用的就是静态不变集合、try-with-resources优化。
所以胖哥抽时间梳理了一下从Java 9到Java 17的一些常用API的变动。今天先来看看Java 9 都有什么东西。 Java 9 Java 9 最大的变化就是引入了一个JShell和模块化,日常并没有用太多,所以今天不花时间在这些功能上面。 Java 9改善了这一现状,现在你可以: // [1, 2, 3, 4] List<Integer> integers = List.of(1, 2, 3, 4); // {1,2,3} Set<Integer Stream扩展 Stream API 是Java 8中引入的最重要的特性之一。在Java 9中Stream进一步得到了加强。 总结 其实Java 9 还有一些底层的优化,不过对于普通开发者来说了解这些就够用了。上面几个特性,比较常用的就是静态不变集合、try-with-resources优化。
读者:对于没有初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为 “零”, 它可否作为空指针或浮点零?
基础知识练习 士人有百折不回之真心,才有万变不穷之妙用。
preStatement 的效率会比 Statement要高一些 安全性 preStatement是预编译的,所以可以有效的防止SQL注入等问题 代码的可读性和可维护性 PreparedStatement更胜一筹 9. 0或1次 {n} 恰n次 {n,m} 从n到m次 其他符号 符号 等价形式 \d [0-9] \D [^0-9] \w [a-zA-Z_0-9] \W [^ a-zA-Z_0-9] \s [\t\n\r\f] \S [^\t\n\r\f] . exception -> Throwable 7. page -> this 8. pageContext -> PageContext 9. 38.Java语言特性 Java致力于检查程序在编译和运行时的错误 Java虚拟机实现了跨平台接口 类型检查帮助检查出许多开发早期出现的错误 Java自己操纵内存减少了内存出错的可能性 Java还实现了真数组
什么是 Java 虚拟机?为什么 Java 被称作是 “ 平台无关的编程语言 ” ? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。 Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。 Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。 JDK: java 开发工具包 , 包含了 JRE 、编译器和其它工具(如: javaDOc 、 java 调试器 ) JRE: java 运行环境 , 包含 java 虚拟机和 java 程序所需的核心类库 java 支持的基本数据类型有以下 9 种 :byte,shot,int,long,float,double,char,boolean,void. 接口是绝对抽象的,不可以被实例化 (java 8 已支持在接口中实现默认的方法 ) 。抽象类也不可以被实例化,但是,如果它包含 main 方法的话是可以被调用的。 9.
db8);//直接截断 456.78 //divide表示除数 保留1位小数并四舍五入 //roundingMode表示结果的取值方式 BigDecimal db9= 在Java程序中,出现这种情况,编译器会报错。 ; System.out.println(sb); sb.insert(9, "Java"); System.out.println(sb); Case 值2:输出语句 break; Default:输出语句 } 随机数 random Random XX=new Random(); int number=ii.nextInt(10);//0~9 //如果a大于b 就将100赋值给c否则就将300赋给c System.out.println(c); {/collapse-item} 本文共 3402 个字数,平均阅读时长 ≈ 9分钟
引言近期在 Baeldung 看到了一篇有关Java9模块化入门介绍的文章,整体翻译加理解下来发现确实不错,个人认为美中不足的是项目构建过于简单和偏手动,个人建议找一些简单的Java9以及之上的开源项目结合参考使用更佳 原文A Guide to Java 9 Modularity | Baeldung1. Module System (JPMS), or “Modules” for short.Java 9 在包上面引入了新的层次,正式的名称叫做 Java 平台模块系统(JPMS),或者更简单称之为“模块 Default ModulesWhen we install Java 9, we can see that the JDK now has a new structure.安装JDK9之后可以看到现在有一个新结构 比如我们使用Java9运行低版本的Java8的程序时候,可能需要添加模块化。
《Java String 两种不同的赋值方案比较》 http://blog.163.com/woshihezhonghua@126/blog/static/1271436362012101214031911 / 简单来说,就是因为java的编译器会自动给你加上。 由此,我想到两点: 第一是,java中的那些基本数据类型,会不会也是由编译器自动加上new这个关键字的。搜了一下必应,没搜到什么有效的答案。 如果常量池中的“hello”长时间没有被引用,java的垃圾回收器就会自动将它回收,释放“hello”对象所占用的空间。对于堆内存中的“hello”对象也是如此。 这里补充说一下,在java中,双等号是用来判断相等的,在String中它判断的是对象的地址是否相等,若要判断String的值是否相等,要用equals方法。
在Java SE 9之前,JDK构建系统用于生成两种类型的运行时映像 ——Java运行时环境(JRE)和Java开发工具包(JDK)。 Java SE 9之前的JDK和JRE目录布局 在 Java SE 9之前,JDK中: bin目录用于包含命令行开发和调试工具,如javac,jar和javadoc。 Java SE 9中的JDK目录布局 在Java SE 9 的JDK中: 没有名为jre的子目录。 bin目录包含所有命令。 在Windows平台上,它继续包含系统的运行时动态链接库。 ="Windows" JAVA_VERSION="9" JAVA_FULL_VERSION="9-ea+133" 在列表中只显示了三个模块。 Java SE 9仍然支持认可的标准和独立API覆盖机制。 在Java SE 9中,运行时映像由模块组成。 要使用此机制,需要使用更新版本的模块,用于支持标准和独立API。
引言 近期在 Baeldung 看到了一篇有关Java9模块化入门介绍的文章,整体翻译加理解下来发现确实不错,个人认为美中不足的是项目构建过于简单和偏手动,个人建议找一些简单的Java9以及之上的开源项目结合参考使用更佳 原文 A Guide to Java 9 Modularity | Baeldung 1. Java 9 在包上面引入了新的层次,正式的名称叫做 Java 平台模块系统(JPMS),或者更简单称之为“模块”。 在Java9之后,这种反射滥用的行为受到明确限制,我们必须要明确授予其他模块对于我们模块的反射访问权限。 比如我们使用Java9运行低版本的Java8的程序时候,可能需要添加模块化。
序 本文介绍下如何在docker运行java9 镜像 docker pull openjdk:9-jdk 启动 docker run -it openjdk:9-jdk /bin/jshell 然后就可以正常使用 (1,2,3,4).stream().limit(3).forEach(e -> System.out.print(e)) 123 退出 jshell> /exit | Goodbye 查看此镜像的java 版本 docker run -it openjdk:9-jdk /bin/bash root@44d1d18351a8:/# java -version openjdk version "9-Debian " OpenJDK Runtime Environment (build 9-Debian+0-9b181-4) OpenJDK 64-Bit Server VM (build 9-Debian+0-9b181 -4, mixed mode) doc Start using Java 9 shell — jshell with docker
此时运行会报错,因为集合不支持通过索引的方法取值,而如果想要通过索引的方式来取值的话,可以将其转成列表再取,方法如下:
一、Java语言的特点 简单性 Java看起来设计的很像c++,取消了很多程序员很少使用的特征。例如:Java不支持go to语句,提供了break和continue语句以及异常处理。 例如,Java显式说明每个基本数据类型的大小和它的运算行为(这些数据类型由Java语法描述)。 Java环境本身对新的硬件平台和操作系统是可移植的。 Java编译程序也用Java编写,而Java运行系统用ANSIC语言编写。 高性能 Java是一种先编译后解释的语言,所以它不如全编译性语言快。 二、JDK和JRE的区别 JRE: java Runtime Environment(java运行时环境)。即java程序的运行时环境,包含了java虚拟机,java基础类库。 JDK: Java Development Kit(java开发工具包)。即java语言编写的程序所需的开发工具包。
提高了代码的复用性 提高了代码的维护性 让类与类之间产生了关系,是多态的前提 继承弊端 类的耦合性增强了 开发的原则:高内聚,低耦合 耦合:类与类的关系 内聚:就是自己完成某件事情的能力 继承特点 Java 只支持单继承 Java支持多层继承(继承体系) 如果想用这个体系的所有功能用最底层的类创建对象 如果想看这个体系的共性功能,看最顶层的类 继承注意事项 子类只能继承父类所有非私有的成员(成员方法和成员变量 override(重写):发生在java的继承中,当子类需要使用和父类方法名相同,但实现过程不同的方法时,就会用到重写。
当然 Java 里的数组是无法自动扩的,方法是使用一个新的数组代替已有的容量小的数组,就像我们用一个小桶装水,如果想装更多的水,就得换大水桶。 java.util.Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、 线程安全等操作。 九:数组在内存中是如何分配的 对于 Java 数组的初始化,有以下两种方式 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度,如: //只是指定初始值,并没有指定数组的长度 ,如: //只是指定了数组的长度,并没有显示的为数组指定初始值,但是系统会默认给数组数组元素分配初始值为null String[] cars = new String[4]; //③ 因为 Java 所以上述几行初始化语句执行后,三个数组在内存中的分配情况如下图所示: 由上图可知,静态初始化方式,程序员虽然没有指定数组长度,但是系统已经自动帮我们给分配了,而动态初始化方式,程序员虽然没有显示的指定初始化值,但是因为 Java
前言: 接着《java基础知识01》,再来聊聊剩下的那些知识点。 一、java基础类库: 1、String字符串: 字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中。 服务端网络编程步骤: 监听端口 获得连接 交换数据 关闭连接 3、Java网络编程: 和网络编程相关的API位于java.net包下。 (1). 部分相关API如下: InetAddress:java 中ip对象 Socket:套接字,通信的端点。 s.close(); ss.close(); } 五、设计模式: Java有23中设计模式,这里只挑几个常用的说一说,想深入了解可以研读《Java设计模式》这本书。 总结: 《java基础知识01》和本文简陋的总结了一些java基础的知识点,由于本人只是个小白,只能在此抛砖引玉,望各位大神多多指点!
在Java的序列化机制中,如果是String,枚举或者实现了Serializable接口的类,均可以通过Java的序列化机制,将类序列化为符合编码的数据流,然后通过InputStream和OutputStream Java中的注解是干嘛的 Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。 Java 注解是从 Java5 开始添加到 Java 的。 Java的注解,可以说是一种标识,标识一个类或者一个字段,常常是和反射,AOP结合起来使用。 import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME import java.lang.annotation.Target; import java.lang.annotation.ElementType; @Target({ElementType.TYPE
J2SE:java标准版,适用于开发桌面应用程序; J2ME:java微型版,适用于消费产品,如手机、掌上计算机; J2EE:java企业版,用来构建企业服务应用; 对象的声明: 类名 对象名;