导航:首页 > 编程语言 > effectinjava

effectinjava

发布时间:2022-09-03 09:43:09

A. java有哪些相关书籍

市面上关于Java的书令人眼花缭乱,很多人完全不知道该看哪本书。整理Java的4本必读书籍给大家分享。

1.《Java从入门到精通》

这本书主要针对Java基础,对于没有学过Java的人才说,是一个不错的选择。通过这本书,大家可以从零开始,慢慢来学习,而且实操很多,不会让你看到最后出现只会理论的情况。

2.《Java编程思想》

在有了一定的Java编程经验之后,你需要“知其所以然”了。这个时候《Java编程思想》是一本让你知其所以然的好书,它对于基本的面向对象知识有比较清楚的交待,对Java基本语法,基本类库有比较清楚的讲解,可以帮你打一个良好的Java编程基础。这本书的缺点是实在太厚,也比较罗嗦,不适合现代人快节奏学习,因此看这本书要懂得取舍,不是每章每节都值得一看的,挑重点的深入看就可以了。

3.《重构:改善既有代码的设计》

出自于 Martin Fowler 的大作,写出优秀代码的必经之路。这本书名气很大,不用多介绍,可以在闲暇的时候多翻翻,多和自己的实践相互印证。这本书对你产生影响是潜移默化的。

4.《Java开发实战经典》

这本书比较适合自学者学习,里面有很多小案例,可以边学边练,巩固知识。

B. 请教为什么java net包打不开 eclipse

兄弟你是不是在看<Thking in java>这本书啊,
这个包要自己编写的

写好以后的代码放在和你写的代码的同一个包里面
不要打成jar包了,我也是过了,打成jar包引入也没成功

C. javafx怎么实现页面的跳转

1. 后台
public class Check {
public static boolean checkreturn(String account,String password){
boolean checkbool = false;
if("account".equals(account)&&"password".equals(password)){
checkbool = true;
}
return checkbool;
}
}

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;

public class LoginController implements Initializable {
@FXML private TextField account;
@FXML private PasswordField password;
private FXMLTest application;

public void setApp(FXMLTest application){
this.application = application;
}
@FXML
public void LOGIN_M(ActionEvent event) {
application.userlogin(account.getText(), password.getText());
}

@FXML
private void CLEAR_M(ActionEvent event) {
account.setText(null);
password.setText(null);
}

@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;

public class MainController implements Initializable{
private FXMLTest application;

public void setApp(FXMLTest application){
this.application = application;
}

@FXML
private void OUT_M(ActionEvent event) {
application.useroutmain();
}

@Override
public void initialize(URL url, ResourceBundle rb) {

}

}

import check.Check;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.fxml.JavaFXBuilderFactory;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class FXMLTest extends Application {
private Stage stage;
private final double MINIMUM_WINDOW_WIDTH = 400.0;
private final double MINIMUM_WINDOW_HEIGHT = 250.0;

@Override
public void start(Stage primaryStage) throws Exception {
stage = primaryStage;
stage.setTitle("FXML Login Sample");
stage.setMinWidth(MINIMUM_WINDOW_WIDTH);
stage.setMinHeight(MINIMUM_WINDOW_HEIGHT);
gotologin();
stage.show();
}
public void gotologin(){
try {
LoginController login = (LoginController) replaceSceneContent("FXML_LOGIN.fxml");
login.setApp(this);
} catch (Exception ex) {
Logger.getLogger(FXMLTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void gotomain(){
try {
MainController main = (MainController) replaceSceneContent("FXML_MAIN.fxml");
main.setApp(this);
} catch (Exception ex) {
Logger.getLogger(FXMLTest.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void userlogin(String account,String password){
if(Check.checkreturn(account,password)){
gotomain();
}
}
public void useroutmain(){
gotologin();
}
private Initializable replaceSceneContent(String fxml) throws Exception {
FXMLLoader loader = new FXMLLoader();
InputStream in = FXMLTest.class.getResourceAsStream(fxml);
loader.setBuilderFactory(new JavaFXBuilderFactory());
loader.setLocation(FXMLTest.class.getResource(fxml));
AnchorPane page;
try {
page = (AnchorPane) loader.load(in);
} finally {
in.close();
}
Scene scene = new Scene(page, 800, 600);
stage.setScene(scene);
stage.sizeToScene();
return (Initializable) loader.getController();
}
public static void main(String[] args) {
launch(args);
}
}
2. xml配置

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.effect.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="250.0" prefWidth="400.0"
xmlns:fx="http://javafx.com/fxml" fx:controller="fxmltest.LoginController">
<children>
<VBox layoutX="3.0" layoutY="0.0" prefHeight="250.0" prefWidth="390.0" spacing="20.0">
<children>
<HBox minHeight="37.0" prefHeight="37.0" prefWidth="411.0">
<children>
<Label text="登陆界面">
<effect>
<DropShadow height="7.845238095238096" radius="4.1815476190476195" width="10.880952380952381" />
</effect>
<font>
<Font name="System Bold" size="30.0" />
</font>
<HBox.margin>
<Insets left="140.0" />
</HBox.margin>
</Label>
</children>
</HBox>
<GridPane alignment="TOP_RIGHT" prefWidth="380.0">
<children>
<Label alignment="TOP_RIGHT" text="Account" GridPane.columnIndex="0" GridPane.halignment="RIGHT" GridPane.rowIndex="0">
<effect>
<DropShadow blurType="TWO_PASS_BOX" height="7.845238095238096" radius="3.675595238095238" width="8.857142857142858" />
</effect>
<font>
<Font size="25.0" fx:id="x1" />
</font>
<GridPane.margin>
<Insets right="8.0" fx:id="x2" />
</GridPane.margin>
</Label>
<Label font="$x1" text="password" GridPane.columnIndex="0" GridPane.halignment="RIGHT" GridPane.margin="$x2" GridPane.rowIndex="1">
<effect>
<DropShadow blurType="TWO_PASS_BOX" height="7.845238095238094" radius="3.6755952380952372" width="8.857142857142854" />
</effect>
</Label>
<TextField fx:id="account" prefHeight="26.0" prefWidth="268.0" promptText="please input your account" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<PasswordField fx:id="password" prefWidth="223.0" promptText="please input your password" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Button id="btn_login" mnemonicParsing="false" onAction="#LOGIN_M" prefWidth="80.0" text="登陆" GridPane.columnIndex="0" GridPane.halignment="RIGHT" GridPane.rowIndex="2">
<effect>
<DropShadow />
</effect>
<GridPane.margin>
<Insets top="15.0" />
</GridPane.margin>
</Button>
<Button id="btn_clear" mnemonicParsing="false" onAction="#CLEAR_M" prefWidth="80.0" text="清除" GridPane.columnIndex="1" GridPane.rowIndex="2">
<effect>
<DropShadow />
</effect>
<GridPane.margin>
<Insets left="80.0" top="15.0" />
</GridPane.margin>
</Button>
</children>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="205.0" minWidth="10.0" prefWidth="147.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="318.0" minWidth="10.0" prefWidth="243.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
</GridPane>
</children>
<padding>
<Insets top="30.0" />
</padding>
</VBox>
</children>
</AnchorPane>

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0"
xmlns:fx="http://javafx.com/fxml" fx:controller="fxmltest.MainController">
<children>
<Hyperlink layoutX="86.0" layoutY="111.0" text="退出登录!" onAction="#OUT_M">
<font>
<Font size="45.0" />
</font>
</Hyperlink>
</children>
</AnchorPane>

D. 关于effect的词组

cause and ~ 因果 curative ~s 疗效 with no ~没有作用 sound ~s音响效果
personal~s 个人财产 ~ a cure 治愈 ~ a policy 取得保险单

E. 在Java中,final修饰的类有什么特点

关于Java中的final(2010-09-09 14:19:48)转载▼标签: javafinal 分类: Java知识学习

Java中的final共有三种用法:

final成员变量
当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变,但引用变量所指向的对象中的内容还是可以改变的。

其初始化可以在三个地方,
一是其定义处,也就是说在final变量定义时直接给其赋值,
二是在构造函数中。而且在Java1.1以前,只能是在定义时给值。
三是在初如化代码块中{} 或者static{}
下面这段代码演示了这一点:更加详细的探讨请参考关于final变量的初始化探讨

import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;

public class Bat {

final double PI = 3.14; // 在定义时便给址值
final int i; // 因为要在构造函数中进行初始化,所以此处便不可再给值
final List list; // 此变量也与上面的一样

Bat() {
i = 100;
list = new LinkedList();
}

Bat(int ii, List l) {
i = ii;
list = l;
}

public static void main(String[] args) {
Bat b = new Bat();
b.list.add(new Bat());//引用不可变,但引用指向的内容是可以变的
// b.i=25; syntax error i是不可变的
//b.list=new ArrayList();错误,对象引用是不可变的
System.out.println("I=" + b.i + " List Type:" + b.list.getClass());
b = new Bat(23, new ArrayList());
b.list.add(new Bat());
System.out.println("I=" + b.i + " List Type:" + b.list.getClass());
}
}

再例如,对于如下语句:

final StringBuffer a=new StringBuffer("immutable");
执行如下语句将报告编译期错误:

a=new StringBuffer("");
但是,执行如下语句则可以通过编译:

a.append(" broken!");

有人在定义方法的参数时,可能想采用如下形式来阻止方法内部修改传进来的参数对象:

public void method(final StringBuffer param)

{

}

实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象,其它对象亦如此:

param.append("a");

在看一个例子
//: FinalData.java
//The effect of final on fields
class Value {
int i = 1;
}

public class FinalData {
// Can be compile-time constants
final int i1 = 9;
static final int I2 = 99;

// Typical public constant:
public static final int I3 = 39;

// Cannot be compile-time constants:
final int i4 = (int) (Math.random() * 20);
static final int i5 = (int) (Math.random() * 20);

Value v1 = new Value();
final Value v2 = new Value();
static final Value v3 = new Value();
// ! final Value v4; // Pre-Java 1.1 Error:for no initializer

// Arrays:
final int[] a = { 1, 2, 3, 4, 5, 6 };

public void print(String id) {
System.out.println(id + ": " + "i4 = " + i4 + ", i5 = " + i5);
}

public static void main(String[] args) {
FinalData fd1 = new FinalData();
// ! fd1.i1++; // Error: can't change value,因为i1是final的
fd1.v2.i++; // Object isn't constant!这个可以是因为类Value中的i是普通变量
fd1.v1 = new Value(); // OK -- not final
for (int i = 0; i < fd1.a.length; i++)
fd1.a[i]++; // Object isn't constant!

//下面三个犯同样的错误 Error: Can'tchange handle
// ! fd1.v2 = new Value();
// ! fd1.v3 = new Value(); //
// ! fd1.a = new int[3];
fd1.print("fd1");
System.out.println("Creating new FinalData");

FinalData fd2 = new FinalData();
fd1.print("fd1");
fd2.print("fd2");
}
}
输出结果(由于上面用了随机函数,所以输出结果可能不一样,但是规律是一样的):
fd1: i4 = 4, i5 = 6
Creating new FinalData
fd1: i4 = 4, i5 = 6
fd2: i4 = 10, i5 = 6
结果分析:fd1与fd2的i4发现值总是不一样,但i5的值却是一样的,这是为什么呢?
我们可以发现定义i4与i5惟一的区别是后者多了一个static,由于final变量和static变量可以说
都只能存一个数据,他们惟一的区别是static变量是属于类的,是类变量,只会被加载一次。
请参考该文章:Java_父类与子类的加载原理
而i4虽然是final的,但是它仍是个普通变量,属于实例变量,每创建一个对象还是会被加载一次,又
由于是个随机函数,所以最终的结果不一样。
所以:一定要区分final与static final的细微差别。

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。

此程序很简单的演示了final的常规用法。在这里使用在构造函数中进行初始化的方法,这使你有了一点灵活性。如Bat的两个重载构造函数所示,第一个缺省构造函数会为你提供默认的值,重载的那个构造函数会根据你所提供的值或类型为final变量初始化。然而有时你并不需要这种灵活性,你只需要在定义时便给定其值并永不变化,这时就不要再用这种方法。在main方法中有两行语句注释掉了,如果你去掉注释,程序便无法通过编译,这便是说,不论是i的值或是list的类型,一旦初始化,确实无法再更改。然而b可以通过重新初始化来指定i的值或 list的类型,输出结果中显示了这一点:
I=100 List Type:class java.util.LinkedList
I=23 List Type:class java.util.ArrayList

还有一种用法是定义方法中的参数为final,对于基本类型的变量,这样做并没有什么实际意义,因为基本类型的变量在调用方法时是传值的,也就是说你可以在方法中更改这个参数变量而不会影响到调用语句,然而对于对象变量,却显得很实用,因为对象变量在传递时是传递其引用,这样你在方法中对对象变量的修改也会影响到调用语句中的对象变量,当你在方法中不需要改变作为参数的对象变量时,明确使用final进行声明,会防止你无意的修改而影响到调用方法。

另外方法中的内部类在用到方法中的参变量时,此参变也必须声明为final才可使用,如下代码所示:
public class INClass {
void innerClass(final String str) {
class IClass {
IClass() {
System.out.println(str);
}
}
IClass ic = new IClass();
}

public static void main(String[] args) {
INClass inc = new INClass();
inc.innerClass("Hello");
}
}

final方法
将方法声明为final,那就说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。

另外有一种被称为inline的机制,它会使你在调用final方法时,直接将方法主体插入到调用处,而不是进行例行的方法调用,例如保存断点,压栈等,这样可能会使你的程序效率有所提高,然而当你的方法主体非常庞大时,或你在多处调用此方法,那么你的调用主体代码便会迅速膨胀,可能反而会影响效率,所以你要慎用final进行方法定义。

类中所有的private方法从某种意义上讲都是属于final的,因为他们在其它地方没法覆盖,你可以在一个private方法前加final修饰符,但没什么意义。

final类
当你将final用于类身上时,你就需要仔细考虑,因为一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。对于final类中的成员变量,你可以定义其为final,也可以不是final。而对于方法,由于所属类为final的关系,自然也就成了final型的。你也可以明确的给final类中的方法加上一个final,但这显然没有意义。
下面的程序演示了final方法和final类的用法:

final class finals {
final String str = "final Data";
public String str1 = "non final data";

final public void print() {
System.out.println("final method.");
}

public void what() {
System.out.println(str + "\n" + str1);
}

}

public class FinalDemo { // extends final 无法继承
public static void main(String[] args) {
finals f = new finals();
f.what();
f.print();
}
}

从程序中可以看出,final类与普通类的使用几乎没有差别,只是它失去了被继承的特性。final方法与非final方法的区别也很难从程序行看出,只是记住慎用。

附注:
final在设计模式中的应用
在设计模式中有一种模式叫做不变模式,在Java中通过final关键字可以很容易的实现这个模式,在讲解final成员时用到的程序Bat.java就是一个不变模式的例子。如果你对此感兴趣,可以参考阎宏博士编写的《Java与模式》一书中的讲解。

F. 在的话帮忙看下这段JAVA注释,用翻译器翻译过来的根本不容易理解,

ChangeGroup encompases是一个表示在org.davidmorgan.jinn.上影响单用户改变的实体对象的有序集合,一旦一个ChangeGroup 对象被创建,它就可以应用于一个SessionState对象改变,也可以与之相反地撤销改变。

G. 如何从java菜鸟变为高手

以下是我在另外一个地方写得,那个想精通,在我看来精通比高手更难,所以如果你想成为高手的话,只需要做到 1 2 4 就可以了,还能找份java的工作。。

大概写一下个人的感觉吧,这样的问题,网上的答案很多的,
1 初学的话,从java的本身语法开始。很多人觉得这些东西很简单,可能一天或者一个上午就完事了。但是,所有的东西,最关键的细节,god in details.你看完以后,去做一下scjp的试题目,看看自己的水平,深深反省一下。不是需要去考这个认证,是让你真正意识到自己对于java的认识。这个阶段可以看一些java培训教程,好像有一个叫张孝详的,比较适合没有其他语言基础的人,如果有基础的,可以看看thinking in java
2 然后一些提高阶段,对于java的语法熟悉以后,就是熟悉java语言,对语言最好的熟悉方法是熟悉他的类库,这个部分,个人推荐最好的书是core java,现在到7还是8版了,我看是的时候是6版本。这本书是我所知道认可程序最高的一本java书了。
3 在对语法和语言都有一定程度的熟悉以后,就要知其然后知其所以然(前提是你想真正精通这个语言,不然这个时个就可以去搞jsp了),这个时候站的角度要高一些,先看看jvm,现在国内这个方法据我看的,没有什么特别好的书,因为也没有几本,了解了整个java是如何运行的以后。想象一下,如果自己需要实现一个java的话,如何做,带着这个问题去jdk的源代码,你会收获很大的。有一本书,叫effect java,本来应该是关于最基础的东西,但是很难的,在这个阶段看的话,收获会很不一样的。

4 在真正花时间在前三个阶段以后,打一个真正扎实的java基础以后,就可以开始真正面java最流行的领域了,从servlet,jsp开始,然后是J2EE那些东西。那些东西在本质上考虑的更多的设计理念和设计模式的东西了。有一个叫java与模式的书,好像叫阎宏写的,是java设计模式很不错的一本入门的书。在看书的时候,想法要开阔一些,不妨想一下,如果我自己要实现个tomcat,应该从哪里开始,如果有这样的想法,对于tomcat这些东西的理解,肯定要比大多数的人深刻一些。
5 在以上的东西都学到一定程度以后,那个时间就更应该关注的是方法论的东西了。包括软件开发模式,程序设计的方法学,这个阶段比较高了,我本人研究不深入,不能提供过多的东西,只能提供一些名词,例如重构,敏捷开发等等。国外好像一个martin, Robert等什么的在这方面比较有研究。

以上所有的过程就需要很多的动手实践,没有实践,所有的编程语言的学习都只是水中花,镜中月,练拳还要练功。如果你有良好的心态(这个最重要了),不要在别人开始学习J2ee等东西的时候,受不住诱惑,偏离了这个方向,要知道,玄门的功夫都是开始入门极难,然后越来越快的,九阴白骨爪之类的就刚好相反了。学习的过程,别的什么都不重要,最重要的一点,是勤奋, 天道酬勤。

H. 有哪些关于JAVA的好书

Java核心编程(Core Java)
java编程思想(Thinking in Java)
java解惑(Java puzzles)
OK了,不过相关的,如java相关设计模式的书另说。

I. JAVA的构造器和C++的构造函数有什么区别

Java和C++在构造函数中调用虚函数的区别
首先可以认为,Java所有instance函数都是虚函数。
C++类的构造函数中调用虚函数,并不能有多态效果。
这样设计的理由是:
在基类的构造函数中,派生类的成员尚未初始化,而派生类的虚函数定义可以使用派生类的成员,C++强制必须先初始化对象然后才能使用【这是C++设计new和构造函数的初衷】,所以不可以调用派生类的虚函数定义。
C++虚函数的实现机制也可以解释这一现象:
对象的虚函数表指针在调用构造函数前更新,指向该类的虚函数表。所以当调用基类的构造函数时,对象的虚函数表指针指向该基类的虚函数表,而不是指向派生类的虚函数表,所以虚函数调用没有多态效果。

但是
Java类的构造函数中调用虚函数,依然有多态效果。
我是在看《The Java Programming Language, fourth edition》5.5 Inheriting Nested Types 这一节时看到了在Field initializer中调用【虚】函数,仍然有多态的效果,大吃一惊,经验证属实。

《Thinking in Java, fourth edition》 Behavior of polymorphic methods inside constructors 这一节对此进行了评论:
If you call a dynamically-bound method inside a constructor, the overridden definition for that method is used. However, the effect of this call can be rather unexpected because the overridden method will be called before the object is fully constructed. This can conceal some difficult-to-find bugs.

总之,这是一把双刃剑,有利有弊,且弊大于利,要小心使用。《The Java Programming Language, fourth edition》5.5 Inheriting Nested Types 这一节举的例子可以使用两步初始化的方法解决,也可以使用延迟创建的方法解决,延迟创建是更好的办法。

C++ 的不懂..帮你找了一下

J. java数据类型的问题

java中boolean类型占一个字节,占八位,但是内存中,boolean只要0 1表示false true,所以 一个位就行啦

阅读全文

与effectinjava相关的资料

热点内容
vc6查看编译的错误 浏览:595
心理大全pdf 浏览:1002
区域链加密币怎么样 浏览:341
查找命令符 浏览:95
压缩工具zar 浏览:735
白盘怎么解压 浏览:474
辰语程序员学习笔记 浏览:47
程序员被公司劝退 浏览:523
java三子棋 浏览:692
加密空间怎么强制进入 浏览:345
ug分割曲线命令 浏览:209
学码思程序员 浏览:609
自考云学习app为什么登不上 浏览:410
domcer服务器昼夜更替怎么搞 浏览:436
plc和单片机哪个好 浏览:535
帝国神话组建云服务器 浏览:827
邓散木pdf 浏览:199
方舟怎么直连服务器图片教程 浏览:563
假相pdf 浏览:336
找对象找程序员怎么找 浏览:976