快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

java基础部分代码博客 Java基础代码

java语法基础,具体内容

Java基础——Java开发前奏

创新互联建站专注于企业成都营销网站建设、网站重做改版、聂荣网站定制设计、自适应品牌网站建设、H5网站设计商城网站制作、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为聂荣等各大城市提供网站开发制作服务。

Java的特点

Java最主要的特点是:一次编译,到处运行(Write Once, Run Anywhere.)。

原理:Java源程序经编译后生成.class字节码文件,.class文件由Java虚拟机(JVM)解释执行。不同的操作系统下,只要有相应的Java字节码解释程序,.class文件就能够运行,这是Java跨平台性的根本。c和java编程与执行的过程如下图所示:

Java的内涵

1、是一种编程语言

2、是一套开发工具

3、是一个运行环境

Java应用平台

1、J2EE(Java 2 Platform Enterprise Edition)——用于企业级应用程序的开发

2、J2SE(Java 2 Platform Standard Edition)——用于普通标准应用程序的开发

3、J2ME(Java 2 Platform Micro Edition)——用于小型消费类电子产品或嵌入式系统的开发

J2SE包括4部分——JVM、JRE、JDK与Java语言。

环境变量的设置

环境变量——在操作系统中定义的变量,可供操作系统上所有的应用程序使用。

1、查看环境变量

a.命令提示行:环境变量的命令——set (环境变量名)

b.窗口方式:我的电脑-属性-高级-环境变量

2、设置path环境变量

path环境变量的作用:设置操作系统寻找和执行应用程序的路径。

JAVA_HOME:C:\Program Files\Java\jdk1.6.0_14

path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

3、设置classpath环境变量

classpath环境变量的作用:让Java执行环境找到指定的java程序(.class文件)。

classpath:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

注意:a.%JAVA_HOME%前面有“.;”,“.”表示当前目录,两个路径之间用“;”隔开。

b.设置classpath的路径中不能有空格,也不能有中文字符。

JVM的运行过程

Java反编译工具——JAD、FrontEnd

Java开发工具

1、记事本

注意保存时文件名应为*.java。

2、UltraEdit、EditPlus

使用EditPlus编辑和编译Java程序,需要进行相应配置。选择“工具”-“参数选择”-“工具”-“用户工具”-“添加工具”-“应用程序”。首先设置“javac”的参数,具体如下图,其中“命令”为javac.exe文件的地址。

然后设置“java”的参数,如下图所示,其中“命令”为java.exe文件的路径。

设置好后默认“javac”工具的快捷键为Ctrl+1,“java”工具的快捷键为Ctrl+2。当编辑好Java源程序后,使用Ctrl+1即可对其进行编译,然后按Ctrl+2运行程序。如下图所示:

3、集成开发环境——Eclipse、MyEclipse、JBuilder等。

关于Eclipse和MyEclipse,刚用的时候感觉二者差不多,查了资料才知道Eclipse 是基础,如同操作系统;而MyEclipse是在Eclipse上面运行的程序,不过进行了增强并提供了新功能。

以前用过Microsoft的Visual Studio 2005,个人感觉VS2005是一个功能非常强大的集成开发环境,不过.NET和Java毕竟不是一家人,学Java还是要用Eclipse的。

JDK中的常用包

1、java.lang——包含一些Java语言的核心类,如String、Math、Thread、System、Integer类等。

2、java.awt——包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面(GUI)。

3、java.applet——包含applet运行所需的一些类。

4、java.net——包含执行与网络相关操作的类。

5、java.io——包含能提供多种输入/输出功能的类。

6、java.util——包含一些实用工具类。

Java的命名习惯

1、包名中的字母一律小写。如:xxxyyyzzz。

2、类名、接口名应使用名词,每个单词的首字母大写。如:XxxYyyZzz。

3、方法名,第一个单词小写,后面每个单词的首字母大写。如:xxxYyyZzz。

4、变量名,第一个单词小写,后面每个单词的首字母大写。

5、常量名中的每个字母一律大写。如:XXXYYYZZZ。

Java基础——Java语法基础(1)

Java代码基本格式

Java中所有程序代码都必须存在于一个类中,用class关键字定义类,在class之前可以有一些修饰符。格式如下:

修饰符 class 类名

{

程序代码

}

注:

1、Java是严格区分大小写的。

2、Java程序中一句连续的字符串不能分开在两行中写。

Java程序的注释

Java里的注释有三种类型:

1、单行注释

在注释内容前面加“//”,格式为:

代码;  //注释内容

2、多行注释

以斜杠加星号开头,以星号加斜杠结尾。

3、文档注释

以斜杠加两个星号开头,以一个星号加斜杠结束。

用这种方法注释的内容会被解释成程序的正式文档,并能包含进诸如javadoc之类的工具程序生成的文档里,用以说明该程序的层次结构及其方法。

补充:

1、多行注释中可以嵌套“//”注释,但不能嵌套多行注释符号。

2、程序注释一般占程序代码总量的20%-50%,“可读性第一,效率第二”。

Java中的标识符

Java中的包、类、方法、参数、变量的名字,可以由任意顺序的大小写字母、数字、下划线(_)、美元符号($)组成,但不能以数字开头,不能是Java中的保留关键字。

Java的关键字

1、用于类和接口的声明:class, extends, implements, interface

2、包引入和包声明:import, package

3、数据类型:byte, boolean, char, double, int, long, float, short

4、某些数据类型的可选值:flase, ture, null

5、流程控制:break, case, continue, default, do, else, for, if, return, switch, while

6、异常处理:catch, finally, throw, throws, try

7、修饰符:abstract, final, native, private, protected, public, static, synchronilzed, transient, volatitle

8、操作符:instanceof

9、创建对象: new

10、引用:this, supper

11、方法返回类型:void

12、保留字:const, goto

Java中的常量

1、整形常量

十进制

十六进制——以0x或0X开头

八进制——以0开头

长整形——以L(l)结尾

2、浮点数常量

单精度浮点数——后面加f(F)

双精度浮点数——后面加d(D)

注:

a.小数常量的默认类型是double型,所以float类型常量后一定要加f(F)。

b.浮点数常量可以用指数形式表示,如5.022e+23f

3、布尔常量

true或false

4、字符常量

由英文字母、数字、转义序列、特殊字符等的字符所表示,如'a'、'\t'等。

Java中的字符占两个字节,是用Unicode码表示的,也可以使用'\u'加Unicode码值来表示对应字符,如'\u0027'。

常用的转义字符有:

\t——表示接受键盘输入,相当于按了一下回车键

\n——表示换行

\t——表示制表符,相当于Tab键

\b——表示退格键,相当于Back Space键

\'——表示单引号

\”——表示双引号

\\——表示反斜杠“\”

5、字符串常量

字符串常量用双引号括起来。

6、null常量

null常量表示对象的引用为空。

Java的变量类型

基本数据类型之间的转换

1、自动类型转换(隐式类型转换)

条件:

a.两种类型彼此兼容

b.目标类型的取值范围要大于源类型

2、强制类型转换(显示类型转换)

格式:目标类型 常量 = (目标类型)值

注:字符串可以使用加号“+”同其他的数据类型相连而形成一个新的字符串。

变量的作用域

代码块决定了变量的作用域,作用域决定了变量的可见性和存在时间。

局部变量

在一个函数或函数里面的代码块中定义的变量称为局部变量。

局部变量在进行取值操作前必须被初始化或进行过赋值操作。

函数

1、定义函数的格式

返回值类型 函数名(参数类型 形式参数1,参数类型形式参数2,...)

{

程序代码

return 返回值;

}

2、函数的重载

函数的重载就是在一个类中可以同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可。

Java基础——Java语法基础(2)——运算符

Java中的运算符

1、算术运算符

a.字符串 + 其他类型 = 字符串

b.如果对负数求余,可以把除数负号忽略不计,如5 % -1 = 1。但如果被除数是负数就另当别论了。

2、赋值运算符

a.在Java中,可以把赋值语句连在一起,如:x = y = z = 5;

b.x += y相当于x = x + y

3、比较运算符

a.要注意比较运算符“==”和赋值运算符“=”的区别,特别是布尔型变量进行比较时。

b.可以将比较运算的表达式写为“false == 变量”的形式,以防止误写为赋值运算。

4、逻辑运算符

a.逻辑运算符用于对boolean型结果的表达式进行运算,运算的结果都是boolean型 。

b.“”和“”的区别在于,如果使用前者连接,那么无论任何情况,“”两边的表达式都会参与计算。如果使用后者连接,当“”的左边为false,则将不会计算其右边的表达式。“|”和“||”的区别与“”和“”的区别一样。

5、位运算符

位运算——对数据按二进制位进行移位操作。

适用类型:byte, short, char, int, long

位运算包括:

位与

| 位或

^ 位异或

左移,左移n位相当于乘以2的n次方

右移,右移n位相当于除以2的n次方

无符号右移

注:

a.位运算符也可以与“=”赋值运算符组合产生新的赋值运算符,如:=, =等。

b.移位不会改变变量本身的值,如a1在一行语句中单独存在毫无意义。

c.对低于int型的操作数将先自动转换为int型再移位;对int型整数移位ab,系统先将b对32取模,得到的结果才是真正移位的位数;对于long型整数移位时则是先将移位位数对64取模。

运算符的优先级

编程技巧:

1、不要在一行中编写太复杂的表达式,可以将其分解为几条语句。

2、多用括号。

Java基础——Java语法基础(3)

程序控制流程

1、顺序结构

按顺序执行

2、if条件语句

a.if...

b.if...else...

可简写为:变量 = 布尔表达式? 语句1:语句2;

c.if...else if...else...

3、switch选择语句

switch(表达式)

{

case 取值1:

语句块1;

break;

...

case 取值n:

语句块n;

break;

default:

语句块n+1;

break;

}

4、while循环语句

while(条件表达式)

{

执行语句

}

5、do while循环语句

do

{

执行语句

}while(条件表达式)

6、for循环语句

for(初始化表达式;循环条件表达式;循环后操作表达式)

{

执行语句

}

7、增强for循环

for (循环变量类型 循环变量名称: 要被遍历的对象)

{

执行语句

}

8、break与continue语句

a.一个无标号的break语句会把控制传回当前最内层循环(while,do,for,switch)的下一条语句。

b.无标号的continue语句的作用是跳过当前循环的剩余语句块,接着执行下一次循环。

数组

1、数组的定义

如:int[] x = new int[100];

或int x[] = new int[100];

2、数组的静态初始化

如:int[] aa = new int[] {3,4,5};

3、多维数据

如:

int[][] xx = new int[3][];

xx[0] = new int[3];

xx[1] = new int[2];

4、一些与数组相关的函数

a. System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length)复制数组,将源数组srcPos开始的length个元素从目标数组的destPos位置开始存储。

b. Array.sort()数组升序排序

求基础级java代码,150-200行,自己写的

我有计算器程序

import javax.swing.*;

import javax.swing.border.Border;

import java.awt.*;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import java.math.BigDecimal;

import java.math.RoundingMode;

import java.util.HashMap;

/**

* 我的计算器。MyCalculator 继承于 JFrame,是计算器的界面

*/

public class Calculator extends JFrame {

/**

*

*/

private static final long serialVersionUID = 1L;

private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5);

private JTextField textbox = new JTextField("0");

private CalculatorCore core = new CalculatorCore();

private ActionListener listener = new ActionListener() {

public void actionPerformed(ActionEvent e) {

JButton b = (JButton) e.getSource();

String label = b.getText();

String result = core.process(label);

textbox.setText(result);

}

};

public Calculator(String title) throws HeadlessException {

super(title); // 调用父类构造方法

setupFrame(); // 调整窗体属性

setupControls(); // 创建控件

}

private void setupControls() {

setupDisplayPanel(); // 创建文本面板

setupButtonsPanel(); // 创建按钮面板

}

// 创建按钮面板并添加按钮

private void setupButtonsPanel() {

JPanel panel = new JPanel();

panel.setBorder(border);

panel.setLayout(new GridLayout(4, 5, 3, 3));

createButtons(panel, new String[]{

"7", "8", "9", "+", "C",

"4", "5", "6", "-", "CE",

"1", "2", "3", "*", "", // 空字符串表示这个位置没有按钮

"0", ".", "=", "/", ""

});

this.add(panel, BorderLayout.CENTER);

}

/**

* 在指定的面板上创建按钮

*

* @param panel 要创建按钮的面板

* @param labels 按钮文字

*/

private void createButtons(JPanel panel, String[] labels) {

for (String label : labels) {

// 如果 label 为空,则表示创建一个空面板。否则创建一个按钮。

if (label.equals("")) {

panel.add(new JPanel());

} else {

JButton b = new JButton(label);

b.addActionListener(listener); // 为按钮添加侦听器

panel.add(b);

}

}

}

// 设置显示面板,用一个文本框来作为计算器的显示部分。

private void setupDisplayPanel() {

JPanel panel = new JPanel();

panel.setLayout(new BorderLayout());

panel.setBorder(border);

setupTextbox();

panel.add(textbox, BorderLayout.CENTER);

this.add(panel, BorderLayout.NORTH);

}

// 调整文本框

private void setupTextbox() {

textbox.setHorizontalAlignment(JTextField.RIGHT); // 文本右对齐

textbox.setEditable(false); // 文本框只读

textbox.setBackground(Color.white); // 文本框背景色为白色

}

// 调整窗体

private void setupFrame() {

this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 当窗体关闭时程序结束

this.setLocation(100, 50); // 设置窗体显示在桌面上的位置

this.setSize(300, 200); // 设置窗体大小

this.setResizable(false); // 窗体大小固定

}

// 程序入口

public static void main(String[] args) throws Exception {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

Calculator frame = new Calculator("我的计算器");

frame.setVisible(true); // 在桌面上显示窗体

}

}

/**

* 计算器核心逻辑。这个逻辑只能处理 1~2 个数的运算。

*/

class CalculatorCore {

private String displayText = "0"; // 要显示的文本

boolean reset = true;

int MaxLen = 30;

private BigDecimal number1, number2;

private String operator;

private HashMapString, Operator operators = new HashMapString, Operator();

private HashMapString, Processor processors = new HashMapString, Processor();

CalculatorCore() {

setupOperators();

setupProcessors();

}

// 为每种命令添加处理方式

private void setupProcessors() {

processors.put("[0-9]", new Processor() {

public void calculate(String command) {

numberClicked(command);

}

});

processors.put("\\.", new Processor() {

public void calculate(String command) {

dotClicked();

}

});

processors.put("=", new Processor() {

public void calculate(String command) {

equalsClicked();

}

});

processors.put("[+\\-*/]", new Processor() {

public void calculate(String command) {

operatorClicked(command);

}

});

processors.put("C", new Processor() {

public void calculate(String command) {

clearClicked();

}

});

processors.put("CE", new Processor() {

public void calculate(String command) {

clearErrorClicked();

}

});

}

// 为每种 operator 添加处理方式

private void setupOperators() {

operators.put("+", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.add(number2);

}

});

operators.put("-", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.subtract(number2);

}

});

operators.put("*", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.multiply(number2);

}

});

operators.put("/", new Operator() {

public BigDecimal process(BigDecimal number1, BigDecimal number2) {

return number1.divide(number2, 30, RoundingMode.HALF_UP);

}

});

}

// 根据命令处理。这里的命令实际上就是按钮文本。

public String process(String command) {

for (String pattern : processors.keySet()) {

if (command.matches(pattern)) {

processors.get(pattern).calculate(command);

break;

}

}

return displayText;

}

// 当按下 CE 时

private void clearErrorClicked() {

if (operator == null) {

number1 = null;

} else {

number2 = null;

}

displayText = "0";

reset = true;

}

// 当按下 C 时,将计算器置为初始状态。

private void clearClicked() {

number1 = null;

number2 = null;

operator = null;

displayText = "0";

reset = true;

}

// 当按下 = 时

private void equalsClicked() {

calculateResult();

number1 = null;

number2 = null;

operator = null;

reset = true;

}

// 计算结果

/**

*

*/

private void calculateResult() {

number2 = new BigDecimal(displayText);

Operator oper = operators.get(operator);

if (oper != null) {

try {

BigDecimal result = oper.process(number1, number2);

displayText = result.toString();

} catch (RuntimeException e) {

clearClicked();//将计算器置为初始状态

JOptionPane.showMessageDialog(null,"不能用零作除数","出错了",JOptionPane.OK_OPTION);

//e.printStackTrace();

}

}

}

// 当按下 +-*/ 时(这里也可以扩展成其他中间操作符)

private void operatorClicked(String command) {

if (operator != null) {

calculateResult();

}

number1 = new BigDecimal(displayText);

operator = command;

reset = true;

}

// 当按下 . 时

private void dotClicked() {

if (displayText.indexOf(".") == -1) {

displayText += ".";

} else if (reset) {

displayText = "0.";

}

reset = false;

}

// 当按下 0-9 时

private void numberClicked(String command) {

if (reset) {

displayText = command;

} else {

if(displayText.length() MaxLen)

displayText += command;

else

JOptionPane.showMessageDialog(null,"输入的数字太长了","出错了",JOptionPane.OK_OPTION);

}

reset = false;

}

// 运算符处理接口

interface Operator {

BigDecimal process(BigDecimal number1, BigDecimal number2);

}

// 按钮处理接口

interface Processor {

void calculate(String command);

}

}

java软件开发的代码规范

1、组织与风格

(1).关键词和操作符之间加适当的空格。

(2).相对独立的程序块与块之间加空行

(3).较长的语句、表达式等要分成多行书写。

(4).划分出的新行要进行适应的缩进,使排版整齐,语句可读。

(5).长表达式要在低优先级操作符处划分新行,操作符放在新行之首。

(6).循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。

(7).若函数或过程中的参数较长,则要进行适当的划分。

(8).不允许把多个短语句写在一行中,即一行只写一条语句。

(9).函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。

注:如果大家有兴趣可以到安安DIY创作室博客,有相关说明性的文章和解释。

2、注解

Java 的语法与 C++ 及为相似,那么,你知道 Java 的注释有几种吗?是两种?

// 注释一行

/* ...... */ 注释若干行

不完全对,除了以上两种之外,还有第三种,文档注释:

/** ...... */ 注释若干行,并写入 javadoc 文档

注释要简单明了。

String userName = null; //用户名

边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。

在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止注释二义性。

保持注释与其描述的代码相邻,即注释的就近原则。

对代码的注释应放在其上方相邻位置,不可放在下面。对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方;

同一结构中不同域的注释要对齐。

变量、常量的注释应放在其上方相邻位置或右方。

全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。

在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。

/**

* Copy Right Information : Neusoft IIT

* Project : eTrain

* JDK version used : jdk1.3.1

* Comments : config path

* Version : 1.01

* Modification history :2003.5.1

* Sr Date Modified By Why What is modified

* 1. 2003.5.2 Kevin Gao new

**/

在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等

/**

* Description :checkout 提款

* @param Hashtable cart info

* @param OrderBean order info

* @return String

*/

public String checkout(Hashtable htCart,

OrderBean orderBean)

throws Exception{

}

javadoc注释标签语法

@author 对类的说明 标明开发该类模块的作者

@version 对类的说明 标明该类模块的版本

@see 对类、属性、方法的说明 参考转向,也就是相关主题

@param 对方法的说明 对方法中某参数的说明

@return 对方法的说明 对方法返回值的说明

@exception 对方法的说明 对方法可能抛出的异常进行说明

3、命名规范

定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性)较短的单词可通过去掉元音形成缩写;要不然最后自己写的代码自己都看不懂了,那可不行。

较长的单词可取单词的头几发符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。

使用匈牙利表示法

Package 的命名

Package 的名字应该都是由一个小写单词组成。

package com.neu.util

Class 的命名

Class 的名字必须由大写字母开头而其他字母都小写的单词组成,对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。

public class ThisAClassName{}

Class 变量的命名

变量的名字必须用一个小写字母开头。后面的单词用大写字母开头

userName , thisAClassMethod

Static Final 变量的命名

static Final 变量的名字应该都大写,并且指出完整含义。

/**

*DBConfig PATH

**/

public static final String

DB_CONFIG_FILE_PATH =com.neu.etrain.dbconfig;

参数的命名

参数的名字必须和变量的命名规范一致。

数组的命名

数组应该总是用下面的方式来命名:

byte[] buffer;

而不是:

byte buffer[];

方法的参数

使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:

SetCounter(int size){

this.size = size;

}

4、文件样式

所有的 Java(*.java) 文件都必须遵守如下的样式规则:

版权信息

版权信息必须在 java 文件的开头,比如:

/*

* Copyright ? 2000 Shanghai XXX Co. Ltd.

* All right reserved.

*/

其他不需要出现在 javadoc 的信息也可以包含在这里。

Package/Imports

package 行要在 import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母

顺序排列。如果 import 行中包含了同一个包中的不同子目录,则应该用 * 来处理。

package hotlava.net.stats;

import java io.*;

import java.util.Observable;

import hotlava.util.Application;

这里 java。io.* 使用来代替InputStream and OutputStream 的。

Class

接下来的是类的注释,一般是用来解释类的。

/**

* A class representing a set of packet and byte counters

* It is observable to allow it to be watched, but only

* reports changes when the current set is complete

*/

接下来是类定义,包含了在不同的行的 extends 和 implements

public class CounterSet

extends Observable

implements Cloneable

Class Fields

接下来是类的成员变量:

/**

* Packet counters

*/

protected int[] packets;

public 的成员变量必须生成文档(JavaDoc)。proceted、private和 package 定义的成

员变量如果名字含义明确的话,可以没有注释。

存取方法

接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简单的

写在一行上。

/**

* Get the counters

* @return an array containing the statistical data. This array has been

* freshly allocated and can be modified by the caller.

*/

public int[] getPackets() { return copyArray(packets, offset); }

public int[] getBytes() { return copyArray(bytes, offset); }

public int[] getPackets() { return packets; }

public void setPackets(int[] packets) { this.packets = packets; }

其它的方法不要写在一行上

构造函数

接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。

访问类型 (public, private 等.) 和 任何 static, final 或 synchronized 应该在一行

中,并且方法和参数另写一行,这样可以使方法和参数更易读。

public

CounterSet(int size){

this.size = size;

}

克隆方法

如果这个类是可以被克隆的,那么下一步就是 clone 方法:

public

Object clone() {

try {

CounterSet obj = (CounterSet)super.clone();

obj.packets = (int[])packets.clone();

obj.size = size;

return obj;

}catch(CloneNotSupportedException e) {

throw new InternalError(Unexpected CloneNotSUpportedException: +

e.getMessage());

}

}

类方法

下面开始写类的方法:

/**

* Set the packet counters

* (such as when restoring from a database)

*/

protected final

void setArray(int[] r1, int[] r2, int[] r3, int[] r4)

throws IllegalArgumentException

{

//

// Ensure the arrays are of equal size

//

if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)

throw new IllegalArgumentException(Arrays must be of the same size);

System.arraycopy(r1, 0, r3, 0, r1.length);

System.arraycopy(r2, 0, r4, 0, r1.length);

}

toString 方法

无论如何,每一个类都应该定义 toString 方法:

public

String toString() {

String retval = CounterSet: ;

for (int i = 0; i data.length(); i++) {

retval += data.bytes.toString();

retval += data.packets.toString();

}

return retval;

}

}

main 方法

如果main(String[]) 方法已经定义了, 那么它应该写在类的底部.

5、代码可读性

避免使用不易理解的数字,用有意义的标识来替代。

不要使用难懂的技巧性很高的语句。

源程序中关系较为紧密的代码应尽可能相邻。

6、代码性能

在写代码的时候,从头至尾都应该考虑性能问题。这不是说时间都应该浪费在优化代码上,而是我们时刻应该提醒自己要注意代码的效率。比如:如果没有时间来实现一个高效的算法,那么我们应该在文档中记录下来,以便在以后有空的时候再来实现她。

不是所有的人都同意在写代码的时候应该优化性能这个观点的,他们认为性能优化的问题应该在项目的后期再去考虑,也就是在程序的轮廓已经实现了以后。

不必要的对象构造

不要在循环中构造和释放对象

使用 StringBuffer 对象

在处理 String 的时候要尽量使用 StringBuffer 类,StringBuffer 类是构成 String 类的基础。

String 类将 StringBuffer 类封装了起来,(以花费更多时间为代价)为开发人员提供了一个安全的接口。当我们在构造字符串的时候,我们应该用 StringBuffer 来实现大部分的工作,当工作完成后将 StringBuffer 对象再转换为需要的 String 对象。比如:如果有一个字符串必须不断地在其后添加许多字符来完成构造,那么我们应该使用StringBuffer 对象和她的 append() 方法。如果我们用 String 对象代替StringBuffer 对象的话,会花费许多不必要的创建和释放对象的 CPU 时间。大家可以来安安DIY创作室一起讨论。

避免太多的使用 synchronized 关键字避免不必要的使用关键字 synchronized,应该在必要的时候再使用她,这是一个避免死锁的好方法。

7、编程技巧

byte 数组转换到 characters

为了将 byte 数组转换到 characters,你可以这么做:

Hello world!.getBytes();

Utility 类

Utility 类(仅仅提供方法的类)应该被申明为抽象的来防止被继承或被初始化。

初始化

下面的代码是一种很好的初始化数组的方法:

objectArguments = new Object[] { arguments };

枚举类型

JAVA 对枚举的支持不好,但是下面的代码是一种很有用的模板:

class Colour {

public static final Colour BLACK = new Colour(0, 0, 0);

public static final Colour RED = new Colour(0xFF, 0, 0);

public static final Colour GREEN = new Colour(0, 0xFF, 0);

public static final Colour BLUE = new Colour(0, 0, 0xFF);

public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);

}

这种技术实现了RED, GREEN, BLUE 等可以象其他语言的枚举类型一样使用的常量。

他们可以用 '==' 操作符来比较。

但是这样使用有一个缺陷:如果一个用户用这样的方法来创建颜色 BLACK new Colour(0,0,0)

那么这就是另外一个对象,'=='操作符就会产生错误。她的 equal() 方法仍然有效。由于这个原因,这个技术的缺陷最好注明在文档中,或者只在自己的包中使用。

8、编写格式

代码样式

代码应该用 unix 的格式,而不是 windows 的(比如:回车变成回车+换行)

文档化

必须用 javadoc 来为类生成文档。不仅因为它是标准,这也是被各种 java 编译器都认可的方法。使用 @author 标记是不被推荐的,因为代码不应该是被个人拥有的。

缩进

缩进应该是每行2个空格. 不要在源文件中保存Tab字符. 在使用不同的源代码管理工具时Tab字符将因为用户设置的不同而扩展为不同的宽度.如果你使用 UltrEdit 作为你的 Java 源代码编辑器的话,你可以通过如下操作来禁止保存Tab字符, 方法是通过 UltrEdit中先设定 Tab 使用的长度室2个空格,然后用 Format|Tabs to Spaces 菜单将 Tab 转换为空格。

页宽

页宽应该设置为80字符. 源代码一般不会超过这个宽度, 并导致无法完整显示, 但这一设置也可以灵活调整. 在任何情况下, 超长的语句应该在一个逗号或者一个操作符后折行. 一条语句折行后, 应该比原来的语句再缩进2个字符.

{} 对

{} 中的语句应该单独作为一行. 例如, 下面的第1行是错误的, 第2行是正确的:

if (i0) { i ++ }; // 错误, { 和 } 在同一行

if (i0) {

i ++

}; // 正确, { 单独作为一行

} 语句永远单独作为一行.如果 } 语句应该缩进到与其相对应的 { 那一行相对齐的位置。

括号

左括号和后一个字符之间不应该出现空格, 同样, 右括号和前一个字符之间也不应该出现空格. 下面的例子说明括号和空格的错误及正确使用:

CallProc( AParameter ); // 错误

CallProc(AParameter); // 正确

不要在语句中使用无意义的括号. 括号只应该为达到某种目的而出现在源代码中。下面的例子说明错误和正确的用法:

if ((I) = 42) { // 错误 - 括号毫无意义

if (I == 42) or (J == 42) then // 正确 - 的确需要括号

9、代码编译

1.编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘损坏等原因造成代码丢失。

2.同一项目组内,最好使用相同的编辑器,并使用相同的设置选项。

3.合理地设计软件系统目录,方便开发人员使用。

4.打开编译器的所有告警开关对程序进行编译。

5.在同一项目组或产品组中,要统一编译开关选项。

6.使用工具软件(如Visual SourceSafe)对代码版本进行维护。如果大家有不明白的可以到安安DIY创作室留言。

10、可移植性

Borland Jbulider 不喜欢 synchronized 这个关键字,如果你的断点设在这些关键字的作用域内的话,调试的时候你会发现的断点会到处乱跳,让你不知所措。除非必须,尽量不要使用。

换行

如果需要换行的话,尽量用 println 来代替在字符串中使用\n。

你不要这样:

System.out.print(Hello,world!\n);

要这样:

System.out.println(Hello,world!);

或者你构造一个带换行符的字符串,至少要象这样:

String newline = System.getProperty(line.separator);

System.out.println(Hello world + newline);

PrintStream

PrintStream 已经被不赞成(deprecated)使用,用 PrintWrite 来代替它。

必备的Java的基础知识有哪些?

几年前,我开始撰写一系列关于如何开始使用Java的文章,我觉得有必要将一些非常详细的内容分成文章。这样,介绍性的内容会更容易理解。首先,让我向您介绍Java 8中的基本类型。正如标题中提到的,Java语言本身有8种基本类型。在下面的部分中,让我们看看这八种基本类型。我将介绍每种基本类型的具体用法和限制。

1、必备的Java的基础知识——Int基本类型

首先,Java整数是32位有符号(即正整数和负整数),用int关键字表示:

Int someNumber = 10;

当然,与所有基本类型一样,整数也有其局限性。因为它只有32位,所以它的值范围从-2147483648到2147483647。那可是个大数目!当然,我们可以使用以下技术在DrJava交互面板中确认这一点:

MAX_VALUE //打印2,147,483,647整数。MIN_VALUE //打印-2,147,483,648

自然,int是最常用的用于简单计算的整数类型。如果您需要更大的数字范围,请参阅下面的long。

2、必备的Java的基础知识——两个基本类型

与int不同,Java的double类型是一个64位浮点数,由double关键字表示:

双someNumber = 110.55;

需要注意的是,浮点数实际上是实数。换句话说,一个双精度浮点数包含一个小数点。

由于双精度类型是64位的,所以它可以表示比整数更多的数字。同样,我们可以使用交互面板来确认双精度类型的范围:

翻倍。MAX_VALUE / / 1.7976931348623157 e308双打印

重要的是要注意,负指数表示非常小的数字,而不是非常大的负数。所以这里的取值范围和整数不完全一样。

通常,double是Java中使用浮点数的默认选择。另一种选择是浮动。

3、必备的Java的基础知识——炭基类型

如我们所见,Java中的字符类型表示16个字符,由CHAR关键字表示:

Char someCharacter = 'f';

Java中的所有字符都用单引号表示。此外,双引号用于表示字符串。我们稍后会讲到字符串。(页面)

像往常一样,我们可以通过以下代码来查找字符的范围:

的性格。MAX_VALUE / / print '??'字符。MIN_VALUE / /打印”

为了使这个范围有意义,我们可以把结果转换成整数(更多关于这个稍后):

(int)字符。输出65535(int)字符。min_value //输出0

如您所见,char类型是Java中唯一的无符号类型。换句话说,字符的值范围从0到65535,每个值映射到一个特定的字符。如果需要创建该范围之外的字符,可以组合一对字符。

4、必备的Java的基础知识——字节基类型

当我们讨论二进制时,我们实际上是在讨论比特的概念。字节由8位组成,字节是Java支持的基本类型之一。实际上,字节类型只不过是一个8位整数,其值从-128到127不等。可以猜到,字节由byte关键字表示:

someByte = 20;

同样,您可以使用以下代码片段来确认字节类型的值范围:

字节。输出127字节。min_value //打印-128

根据我的经验,字节类型在读取和处理原始数据时很有用。但一般来说,我们不会用它因为范围太小了。

以上就是《有哪些必备的Java的基础知识?想学好这个语言就要了解这些》的全部内容,环球网校的小编希望大家在刚开始从事编程工作时,可以先去学习一下Java,可以优化你的工作思维,小编祝您Java之路顺利。如果你想知道更多Java知识,可以点击本站的其他文章进行学习。


本文标题:java基础部分代码博客 Java基础代码
文章来源:http://6mz.cn/article/doosjic.html

其他资讯