Java教程 第12页

Java charAt() 方法-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java charAt() 方法

Java charAt() 方法 Java String类 charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() – 1。 语法 public char charAt(int index) 参数 index — 字符的索引。 返回值 返回指定索引处的字符。 实例 public class Test { public static void main(String args[]) { String s = "www.w3cschool.cn"; char result = s.charAt(8); System.out.println(result); } } 以上程序执行结果为: C Java String类

JPA 实体管理器-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

JPA 实体管理器

实体管理器概述 实体管理器(EntityManager)用于管理系统中的实体,它是实体与数据库之间的桥梁,通过调用实体管理器的相关方法可以把实体持久化到数据库中,同时也可以把数据库中的记录打包成实体对象。 实体的四种状态 在此之前我们要先了解实体的状态及其转换,见下图 JPA 实体生命周期有四种状态 新建状态(New):对象在保存进数据库之前为临时状态。此时数据库中没有该对象的信息,该对象的ID属性也为空。如果没有被持久化,程序退出时临时状态的对象信息将丢失。 托管状态(Managed):对象在保存进数据库后或者从数据库中加载后、并且没有脱离Session时为持久化状态。这时候数据库中有对象的信息,改对象的id为数据库中对应记录的主键值。由于还在 Session中,持久化状态的对象可以执行任何有关数据库的操作,例如获取集合属性的值等。 游离状态(Datached):是对象曾经处于持久化状态、但是现在已经离开Session了。虽然分离状态的对象有id值,有对应的数据库记录,但是已经无法执行有关数据库的操作。例如,读取延迟加载的集合属性,可能会抛出延迟加载异常。 删除状态(Removed):删除的对象,有id值,尚且和 Persistence  Context 有关联,但是已经准备好从数据库中删除。 创建实体管理器 所有实体管理器都来自类型​javax.persistence.EntityManagerFactory​的工厂。 以下示例演示为名为“EmployeeService”的持久性单元创建一个​EntityManagerFactory​: EntityManagerFactory emf = Persistence.createEntityManagerFactory("EmployeeService"); 以下示例演示如何在上一个示例中获取的工厂创建实体管理器: EntityManager em = emf.createEntityManager(); 保存实体 我们使用实体管理器来持久化​Employee​的实例。 Employee emp = new Employee(158); em.persist(emp); 以下代码显示如何在创建新员工并将其保留到数据库的方法中使用​EntityManager​。 public Employee createEmployee(int id, String name, long salary) { Employee emp = new Employee(id); emp.setName(name); emp.setSalary(salary); em.persist(emp); return emp; } 查找实体 一旦实体在数据库中,下一行代码显示如何找到它。 Employee emp = em.find(Employee.class, 1); 删除实体 要从数据库中删除实体,请从​EntityManager​调用​remove​方法。 Employee emp = em.find(Employee.class, 1); em.remove(emp); 更新实体 要更新实体,我们可以在被管实体上调用​setter​方法。被管实体是从​EntityManager​返回的实体。 Employee emp = em.find(Employee.class, 1); emp.setName("new Name"); 事务 以下代码显示如何启动和提交事务。 em.getTransaction().begin(); Employee emp = new Employee(158); em.persist(emp); em.getTransaction().commit(); 查询 在​JPA​中,有一种称为​Java​持久性查询语言(JP QL)的新的查询语言。 以下示例显示如何创建动态查询,然后执行它以获取数据库中的所有员工。 TypedQuery<Employee> query = em.createQuery("SELECT e FROM Employee e", Employee.class); List<Employee> emps = query.getResultList(); 我们通过在​EntityManager​上发出​createQuery()​调用并传入 JP QL 字符串来创建一个​TypedQuery<Employee>​对象。 JP QL 字符串不是指​EMPLOYEE​数据库表,而是Employee实体。 例子 以下代码显示了一个简单的完全功能类,可用于对​Employee​实体发出典型的创建,读取,更新和删除(CRUD)操作。 import java.util.List; import javax.persistence.EntityManager; import...

Java this关键字-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java this关键字

Java面向对象设计 – Java this关键字 什么是 this? Java有一个名为 this 的关键字。它是对类的当前实例的引用。 它只能在实例的上下文中使用。 以下代码显示如何使用this关键字。 public class Main { int varA = 1; int varB = varA; // Assign value of varA to varB int varC = this.varA; // Assign value of varA to varC } 当实例变量或类变量被具有相同名称的另一个变量隐藏时,我们需要使用关键字this限定一个实例变量,并使用类名称定义一个类变量。 使用 this 来区分当前对象。 Java 中为解决变量的命名冲突和不确定性问题,引入关键字 this 代表其所在方法的当前对象的引用: 构造方法中指该构造器所创建的新对象; 方法中指调用该方法的对象; 在类本身的方法或构造器中引用该类的实例变量(全局变量)和方法。 this 只能用在构造器或者方法中,用于获得调用当前的构造器方法的对象引用。可以和任何的对象引用一样来处理这个this对象。 说明: 当实例变量和局部变量重名,JAVA 平台会按照先局部变量、后实例变量的顺序寻找。即,方法中使用到的变量的寻找规律是先找局部变量,再找实例变量。如果没用找到,将会有一个编译错误而无法通过编译。 如果使用 this.a,则不会在方法(局部变量)中寻找变量 a ,而是直接去实例变量中去寻找,如果寻找不到,则会有一个编译错误。 在一个方法内,如果没有出现局部变量和实例变量重名的情况下,是否使用 this 关键字是没有区别的。 在同一个类中,Java 普通方法的互相调用可以省略 ​this. ​,而直接使用方法名 + 参数。因为 Java 编译器会帮我们加上。 例子 下面的代码显示了如何使用 this 关键字来引用一个实例变量,它的名字被一个局部变量隐藏。 public class Main { int num = 2014; // An instance variable void printNum(int num) { System.out.println("Parameter num: " + num); System.out.println("Instance variable num: " + this.num); } public static void main(String[] args) { Main tt6 = new Main(); tt6.printNum(2000); } } 上面的代码生成以下结果。...

Java 枚举

概念 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性。 在 Java 中,被 enum 关键字修饰的类型就是枚举类型。形式如下: enum Color { RED, GREEN, BLUE } 如果枚举不添加任何方法,枚举值默认为从0开始的有序数值。以 Color 枚举类型举例,它的枚举常量依次为 RED:0,GREEN:1,BLUE:2。 枚举的好处:可以将常量组织起来,统一进行管理。 枚举的典型应用场景:错误码、状态机等。 枚举类型的本质 尽管 enum 看起来像是一种新的数据类型,事实上,enum是一种受限制的类,并且具有自己的方法。 创建 enum 时,编译器会为你生成一个相关的类,这个类继承自 java.lang.Enum。 java.lang.Enum 类声明 public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable { ... } 枚举的方法 在enum中,提供了一些基本方法: values():返回 enum 实例的数组,而且该数组中的元素严格保持在 enum 中声明时的顺序。 name():返回实例名。 ordinal():返回实例声明时的次序,从0开始。 getDeclaringClass():返回实例所属的 enum 类型。 equals() :判断是否为同一个对象。 可以使用 == 来比较enum实例。 此外,java.lang.Enum 实现了 Comparable 和 Serializable 接口,所以也提供 compareTo() 方法。 例:展示enum的基本方法 public class EnumMethodDemo { enum Color {RED, GREEN, BLUE;} enum Size {BIG, MIDDLE, SMALL;} public static void main(String args[]) { System.out.println("=========== Print all Color ==========="); for (Color c : Color.values()) { System.out.println(c + " ordinal: " + c.ordinal()); } System.out.println("=========== Print all Size ==========="); for (Size s : Size.values()) { System.out.println(s + " ordinal: " + s.ordinal()); } Color green...

JavaFX CSS

JavaFX教程 – JavaFX CSS JavaFX 应用程序支持主题通过 CSS 设置。 主题可以转换整个应用程序的外观,而不改变其功能。 在 JavaFX 中,您可以创建,修改或使用现有主题来应用程序。 应用主题 setUserAgentStylesheet(String URL) 方法接受表示 JavaFX CSS 文件的有效URL字符串。 CSS 文件捆绑在jar应用程序内,或者它们可以驻留在本地文件系统或远程 Web 服务器上。 要从类路径加载 CSS 文件,请调用 getClass()。getResource(“path / some_file.css”)。toExternalForm() 方法。它会找到 CSS 文件并产生一个 URL String。 下面的代码加载 sample.css 文件作为当前的外观。 sample.css 文件和 Java 类位于同一目录中,因此文件名前面不需要有路径。 Application.setUserAgentStylesheet(getClass().getResource("sample.css") .toExternalForm()); 完整的源代码。 import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { Application.setUserAgentStylesheet(getClass().getResource("sample.css") .toExternalForm()); Group root = new Group(); Scene scene = new Scene(root, 300, 250); primaryStage.setScene(scene); primaryStage.show(); } } setUserAgentStylesheet() 方法将样式全局应用于应用程序拥有的所有场景。 预定义皮肤 JavaFX 8 目前包含两个样式表,Caspian 和 Modena,它们用作默认的跨平台外观和感觉皮肤。 因为两个样式表是预定义的,您可以使用 setUserAgentStylesheet()方法在它们之间轻松切换。 以下代码显示如何在 Caspian 和 Modena 外观样式表之间切换。 // Switch to JavaFX 2.x"s CASPIAN Look and Feel. Application.setUserAgentStylesheet(STYLESHEET_CASPIAN); // Switch to JavaFX 8"s...

Java startsWith() 方法-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java startsWith() 方法

Java startsWith() 方法 Java String类 startsWith() 方法用于检测字符串是否以指定的前缀开始。 语法 public boolean startsWith(String prefix, int toffset) 或 public boolean startsWith(String prefix) 参数 prefix — 前缀。 toffset — 字符串中开始查找的位置。 返回值 如果字符串以指定的前缀开始,则返回 true;否则返回 false。 实例 public class Test { public static void main(String args[]) { String Str = new String("www.w3cschool.cn"); System.out.print("返回值 :" ); System.out.println(Str.startsWith("www") ); System.out.print("返回值 :" ); System.out.println(Str.startsWith("w3cschool") ); System.out.print("返回值 :" ); System.out.println(Str.startsWith("w3cschool", 4) ); } } 以上程序执行结果为: 返回值 :true 返回值 :false 返回值 :true Java String类

Java 集合算法-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java 集合算法

Java集合教程 – Java集合算法 列表排序 Collection类中的两个静态方法会对List进行排序。 sort(List list)按照由元素实现的Comparable接口定义的顺序对List中的元素进行排序。 sort(List list,Comparator c)使用传入的Comparator对象对元素进行排序。 我们还可以使用List接口中的sort(Comparator c)对List进行排序,而不使用Collections类。 以下代码演示了如何对 List 进行排序: import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("J"); list.add("R"); list.add("C"); list.add("X"); System.out.println("List: " + list); // Uses Comparable implementation in String class // to sort the list in natural order Collections.sort(list); System.out.println("Sorted List: " + list); } } 上面的代码生成以下结果。 例子 以下代码使用List接口中的sort()方法按其元素长度的升序对列表进行排序: import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("Java"); list.add("R"); list.add("CSS"); list.add("XML"); System.out.println("List: " + list); // Uses List.sort() method with a Comparator list.sort(Comparator.comparing(String::length)); System.out.println("Sorted List: " + list); } } 上面的代码生成以下结果。 sort()方法使用修改的mergeesort算法,这是一个稳定的排序。 在稳定的排序中,相等的元素将在排序操作之后保持在它们当前的位置。 排序提供了 n*log(n)性能,其中 n...

JSON 语法

Java JSON教程 – JSON语法 JSON 语法是 JavaScript 对象表示语法的子集。 数据以名称/值对表示。 数据由逗号分隔 花括号括住对象,名称/值对由,分隔。 方括号保存数组,值用,分隔。 JSON支持以下两个数据结构: 数据结构 描述 名称/值对的集合 key:value,key:value, 有序的值列表 [1,2,3,4] JSON 值 在 JSON 中,值必须是以下数据类型之一: 字符串(在双引号中) 数字(整数或浮点数) 对象(在大括号中) 数组(在小括号中) 逻辑值(true 或 false) null 在 JavaScript 中,以上所列均可为值,外加其他有效的 JavaScript 表达式,包括: 函数 日期 undefined 在 JSON 中,字符串值必须由双引号编写 例子 JSON 数据- 名称和值 JSON 数据写为名称/值对。 名称/值由字段名称构成,后跟冒号和值: 实例 "name":"W3Cschool" 等价于: name = "W3Cschool" JSON 名称需要双引号。而 JavaScript 名称不需要。 JSON – 求值为 JavaScript 对象 JSON 格式几乎等同于 JavaScript 对象。 在 JSON 中,键必须是字符串,由双引号包围: JSON { "name":"W3Cschool" } 在 JavaScript 中,键可以是字符串、数字或标识符名称: JavaScript { name:"W3Cschool" } 例子 以下JSON数据指定书籍。 { "book": [ { "id":"01", "language": "Java", "edition": "third", "author": "java2s.com" }, { "id":"02", "language": "JSON", "edition": "second" "author": "java2s.com" }] }

Java random() 方法-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java random() 方法

Java random() 方法 Java Number类 random() 方法用于返回一个随机数,随机数范围为 0.0 =< Math.random < 1.0。 语法 static double random() 参数 这是一个默认方法,不接受任何参数。 返回值 该方法返回 double 值。 实例 public class Test{ public static void main(String args[]){ System.out.println( Math.random() ); System.out.println( Math.random() ); } } 编译以上程序,输出结果为: 0.5444085967267008 0.7960235983184115 Java Number类

Java toRadians() 方法-国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码

Java toRadians() 方法

Java toRadians() 方法 Java Number类 toRadians() 方法用于将角度转换为弧度。 语法 double toRadians(double d) 参数 d — 任何原生数据类型。 返回值 该方法返回 double 值。 实例 public class Test{ public static void main(String args[]){ double x = 45.0; double y = 30.0; System.out.println( Math.toRadians(x) ); System.out.println( Math.toRadians(y) ); } } 编译以上程序,输出结果为: 0.7853981633974483 0.5235987755982988 Java Number类