编程语言 - webdancer's Blog

重新拾起C(1)-关键字

      前记:  以前自学的C语言,但是很肤浅!决定,再认真地学一遍。认真的看看C语言,学习的书是陈正冲老师的《C语言深度解析》。套用一句话,永远给我记住一点:结果对,并不代表程序真正没有问题。

c 的关键字:      

auto break case char const continue default do
double else enum extern float for goto if
int long register return short signed sizeof static
struct switch typedef union unsigned void volatile while
1)auto:所有变量缺省为auto。

2)register:寄存器变量修饰,其变量必须是单一的值,且不能用&,取得地址。

3)static:静态修饰符,只能被本文件引用,其他文件不可用。

4)short:短整型。

3)int:整型。

4)long:长整型。

5)float:单精度浮点数。

6)double:双精度浮点数。

7)char:字符类型。

8)enum:枚举类型。(应该是基本类型吧!)

 

     enum ColorT {red, orange, yellow, green, blue, indigo, violet};
     ...
     ColorT c1 = indigo;
     if( c1 == indigo ) {
       cout << "c1 is indigo" << endl;
     }

 

 

8)struct:结构体。

 

 struct Date {
       int day;
       int month;
       int year;
     } today;

 

 

9)union:共用体。

 

     union Data {
       int i;
       char c;
     };

 

 

10)void:函数,返回值为空。指针,可以指向任何类型数据。

11)sizeof:计算参数大小。

12)signed:有符号。

13)unsigned:无符号。

14)if :条件。

15)else:其他,条件语句。

16)switch:条件分支语句。

17)case:条件分支语句。

18)do :循环语句。

19) while :循环语句。

20)for:循环语句。

21)break:跳出循环体。

22)continue:结束本次循环,进入下次循环。

23)goto:跳转语句,应该禁用,破坏结构化。当然,还是自己的习惯!

24)return:返回值。

25)const:常量,在c与c++有区别。

26)volatile:可变的,编译器不会自作主张优化其声明的变量。

27)extern :可以置于变量或者函数前,以标示变量或者函数的定义在别的文件

28)typedef:分一个新名字,与原来的一样用。

 

    typedef unsigned int* pui_t;
    // data1 and data2 have the same type
    pui_t data1;
    unsigned int* data2;

 

 

 

 

 

clone 创建对象副本

public interface Cloneable

 此类实现了 Cloneable 接口,以指示方法Object.clone()可以合法地对该类实例进行按字段复制。

如果在没有实现 Cloneable 接口的实例上调用 Object 的 clone 方法,则会导致抛出 CloneNotSupportedException 异常。

按照惯例,实现此接口的类应该使用公共方法重写 Object.clone(它是受保护的)。请参阅 Object.clone(), 以获得有关重写此方法的详细信息。

但是如果直接查询JDK文档会发现Cloneable接口中并没有任何的方法定义,所以此接口在设计上称为是一种标识接口,表示对象可以被克隆。

 

  1. class Person implements Cloneable { // 
    必须实现Cloneable接口
     
  2.     private String name = null;  
  3.     public Person(String name) {  
  4.         this.name = name;  
  5.     }  
  6.     public void setName(String name) {  
  7.         this.name = name;  
  8.     }  
  9.     public String getName() {  
  10.         return this.name;  
  11.     }  
  12.     // 需要子类覆写clone方法  
  13.     public Object clone() throws 
    CloneNotSupportedException {  
  14.         return super.clone();       //
    具体的克隆操作由父类完成
     
  15.     }  
  16.     public String toString() {  
  17.         return "姓名:" + this.getName();  
  18.     }  
  19. };  
  20. public class CloneDemo01 {  
  21.     public static void main(String[] args) 
    throws Exception {  
  22.         Person p1 = new Person("张三");  
  23.         Person p2 = (Person) p1.clone();  
  24.         p2.setName("李四");  
  25.         System.out.println("原始对象:" + p1);  
  26.         System.out.println("克隆之后的对象:" + p2);  
  27.     }  
  28. }

Math类及类型转换

1)Math类,位于java.lang包里。里面封装了数学常量及常用的函数。

2)类型转化:1)低精度向高精度转。

 

                 2)强制类型转换。使用()。

注意:通常,不将布尔类型与其它类型转化,防止一些错误。

3)大数值问题。

BigInteger表示是大整数类,定义在java.math包中,如果在操作时一个整型数据已经超过了整数的最大类型长度long,数据无法装入,此 时可以使用.

同时,提供了基本的算术运算。+ -  *  / 等。(有时很有用的吆!)

 

 

 

java基本输入输出

输入:

利用scanner类,jdk5.0以后新增类。

1)Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。它附属于标准输入流System.in。

2)基本用法:

 

Scanner sc=new Scanner(System.in);
int i=sc.nextInt();

3)包:Java.util.*

输出:

1)System.out类封装了很多输出方法。print,println,当然还有我们c里面的printf。(jdk1.5沿用了c)

2)printf的格式方法:

整数: d(10) , x(16), o(8)

浮点数:f (定点),e(指数)  ,g(通用) ,a (16浮点)

字符:c

字符串:s

布尔: b

时间:t

(详细:printf)。

真悲哀,当时学的时候只用了print ,println!

 

 

 

 

 

 




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee