Java 课堂记录 02

今天感觉到MFC真的好朦胧,决心努力学 winSDK ..............

1、package 和 import 与 classpath:
Package: 在一个项目中可以根据类所完成的功能将他们划分在不同的包中.(包和我们平时所说的目录可以等同起来).Package有利于大型项目的开发,减少其复杂性,有利于类的复用
Package有利于避免命名的冲突,并且能保证类之间访问的安全.
Package语句作为java文件的第一个语句来创建包。编译生成的.class文件保存在package语句后的目录(包名)下。一个包中可以包含任意多的类。包和包可以嵌套就和目录的嵌套关系一样。
classpath:
用来指定命令行查找需要包含的包名的上级目录,如果你在Name.java文件( 在 p1文件夹下 )中定义了包package p1; p1文件放在e:/class目录下< 文件所在的目录(pl)必须要与其包名(pl)一致。否则虽然编译能通过但是运行不能通过 >。如果需要在命令行中能直接执行 java p1.Name; 《运行class文件时前面需要加上所在包名》 就需要在classpath中添加e:/class; .
import:
如果在 UseBook.java 中需要用到 Book.java , 而Book.java 产生的类在 包 p1 中,则需要在UseBook.java 中的package 语句后加 import p1.*; (前提:p1 的上级目录 e:/class 已经存在与 classpath 中,否则会说: 软件包 p1 不存在)。
import java.lang.*;对于每一个java程序来说都是必须的,所以默认情况下编译器将会包含该语句.

如: 桌面有lecture05/Exercise 下有两个文件: Book.java( package package1; 定义了公共类 Book ); UseBook.java( package package2; 定义了公共类Use Book ,用import package1.Book 访问了 Book.java 中的 Book 类 并定义了main() )。现在需要在命令行的任意目录下 输入 java package2.UseBook 能执行程序 :
1、 cd/d C:/Documents and Settings/arena_zp/桌面/lecture05/Exercise;
 mkdir package1; mkdir package2; move Book.java package1; move UseBook.java package2;
 javac package2/UseBook.java // 只需要编译含main() 的文件,其中调用对象的类的java文件会自动编译。
 添加 CLASSPATH .;
 java package2.UseBook
 添加 CLASSPATH C:/Documents and Settings/arena_zp/桌面/lecture05/Exercise; cd/d c:/;  java package2.UseBook.
// 对于有package 命令的文件, 必须要用包名.类名来运行该类。 平常 java Name; 能运行是因为 " .; " 和 没有package命令。

2、变量和方法的修饰符
public: 任何其它类、对象都可以访问public修饰的属性 和方法。
注意:public的方法能够被其他包中程序访问的前提是public方法所在的类的权限修饰符也是public的。原因很简单:friendly修饰的类对于包之外的类是隐藏的。
Protected:同一类,同一包可以使用。不同包的类B要使用类A,必须满足:类A是可见的(public),类B是类A的子类。
friendly(前边没有修饰符的情况):在同一程序包中出现的类才可以直接使用它修饰的数据和方法.
Private:不允许任何其他类存取和调用

3、String :
1、在Java中所有的字符串都是用对象的方式来存储,而C++中的字符串可以看成字符数组,支持用 arr[i] 的方式访问字符串中的字符。Java 不支持。
2、区别: String对象存储的字符串空间只读,StringBuffer 对象存储的字符可变
3、只有String类的对象支持用字符串常量的来完成初始化。
4、String类型的常量在系统中作为一个匿名的对象存储,如果有两个匿名对象的内容相同,他们会共享系统的空间。不同于 必产生新空间的 new().
5、连接一个字串和一个非字符串值时,后者将会转换成字串。 System.out.print( 66 + '/n' + '/n' + "/n" );  // 86  (最后一个才表示了一个 换行)。System.out.println(“The “ + 9 + 3);  // 12
concat(String str);substring(int beginIndex, int endIndex);  String trim();//trim去掉的空白字符包括了回车换行符、空白符、tab符号等。
 length();  charAt(int index);  int indexOf(String str, int fromIndex); int lastIndexOf(char , int lastIndex);;
String replace(char oldChar, char newChar); String toLowerCase();
 boolean equalsIgnoreCase(String str); nt compareTo(String other);  boolean  endsWith(String suffix);

StringBuffer :
StringBuffer对象的值改变时,系统会继续在原有的空间上添加新的内容,或在原有空间中改变内容。这时原有的空间将继续使用。
StringBuffer (String str):// str.length() + 16;  StrinBuffer() : // 16;  StringBuffer(int?length); // length;
String  substring(int start, int end);  int lastIndexOf(String str); char charAt(int index) ; 
void setCharAt(int index, char ch);  append(), 有 char c; char str; int i; String str;
insert(int offset, char[] str);  第二个参数可为 float f, String str;
delete(int start, int end); deleteCharAt(int index); reverse();
capacity();  ensureCapacity(int minCapcity);   void setLength(int newLength); 

4、API 功能划分
Java.applet Classes for implementing applets.
Java.awt Classes for graphics, text, windows, and GUIs.
Java.awt.event Classes for GUI button, mouse actions, etc.
Java.io Classes for input and output.
Java.lang Classes for the core language.
Java.net Classes for networking.
Java.util Classes for useful data types.   // 如用于输入的Scanner

import javax.swing.*; 
public class InputTest2
{
 public static void main(String[] args)
 {
               String name =  JOptionPane.showInputDialog("What is your name?");
               String input = JOptionPane.showInputDialog("How old are you?");
               int age = Integer.parseInt(input);//类型转换
               System.out.println("Hello, " + name + ". Next year, you'll be " + (age + 1));
               System.exit(0);
   }
}
(1) showInputDialog读取的数据都是String类型,所以在程序中需要根据需要做类型转换。
(2) JOptionPane.showInputDialog调用时系统会创建新的线程(thread),所以在每一次使用时都需要调用System.exit(0); 来关闭所有的所有的线程.

JDK1.5 支持 C语言中的格式化输出方式。( chapter3 表3-5,3-6,3-7 )
Math类中的方法都是静态方法所以通过类名直接访问:
取整的方法,如round, floor, ceiling; + 随机数的方法,如random; 取绝对值 abs() + log(), sin(), pow(), max(,), min (,) exp(), sqr(), 等;
Math.round(-10.5); // result is –10
Math.max(1024, -5000); // output is 1024.

5、杂
1)、if( !(0) ) 运算符 ! 不能应用于 int;
2)、if( 1 ) ; 不兼容的类型,找到: int; 需要: boolean.
3)、Book b1, b2;  b1 = b2;  // 错误, null 不能赋值
4)、c:/>java User one two three时 args[0] = “one” args[1]=“two” args[2] = “three”;   命令行参数。
5)、this与当前对象的引用含义相同,所以静态方法体中不能使用this关键字, 在非静态方法中可以用this关键字访问静态属性。
6)、= 永远不会产生新的空间分配(new 一定会产生新空间),只是一个引用赋值。 不像 C++ 中有对 = 号的重载。 区别 Stirng str = "ECNU" 与 String str = new String( "ECNU" ).

你可能感兴趣的:(JAVA)