java 基础

来源:互联网 发布:linux cdn 测试 编辑:程序博客网 时间:2024/06/13 20:10
 

Hardware硬件  input output cpu memory内存

software软件  application(app) os

wetware湿件  pesson

 

platform(平台)  intrel

  IDE

深入虚拟机

 

param  参数

field字段 

constructor构造器 (无构造参数)

method方法(有方法参数) 

 

注释

1、创建公司时间作者/*     */

2、此类代表,注意条件/**   */

  版本 @version 1.0

  创建时间 @since 2011.06.22

  看 see   (F2快捷键查看)

  @deprecated     过期标志(有删除线),在在下一个方法参数中放弃,尽量不要用

3、 F3 可以查看源文件的代码。F2提取注释信息。

4、 Ctrl+Shift+J

 

下午

1、代码规范问题

   1、一句代码占一行。

   2、可以多行,不要过宽。 一項內容空一行。

2、$ _ 字母 数字 美元符号 下划线。

3、类的名子首字母大写,方法的命名,

4、关键字

   byte(-128-127)(8位)   short(16位)   int(32位)  long(64位)(long a=23345f)

   进制问题  0Xff(16)  023(8)

   浮點类型  float(单精度)float f=1.23f        double f=3.43(双精度)

   boolean(8)  表示 true or false

   char(16)  表示字節   任意字符  转义字符   char h='\n';    '\r';  '\,';   '\\';   '\U00ab';

  

   String   == 比较的值是否一样,true和false  两个new时比较是false,否则

5、內存

   堆(heap)其他数据放堆里使用。 

   栈(stack)局部变量

6、this

   局部变量  在static中不可用

    不同的调用方法

7、String比较重要的基本类型

   创建 可以使空字符串,索引从零开始的,

   返回结果是负数时表示没有查到

  s.indexOf('a')即字符a的位置    s.lastIndexOf('a'),从右边向左找 

  s.indexOf('a',3)从3位置开始找  s.indexOf('a',3)从3位置自右向左开始找

  s.indexOf("abdf")字符串abdf的位置,

  s.chArt(4);

  s.subString(3)从3开始的以后所有

  s.subString(3,5)从3开始5结束的字符串

  replace

   1、直接替换 

   s.replace('ab','sy')   s.trim() 去除两端空格

   s.toUpperCase()   字符串全部转换成大写

   s.toLowerCase()   字符串全部转换成小写

  

    作业

      根据身份证号码  打印出出生年月日。

1、局部变量申明后不能直接用,得设置值后,即赋值后

     使用时有read和write操作之分。   a+=1包括(read  write)

  2、类里的字段初始值  数字表示0    boolean 表示fals  char表示  \u0000显示方块 String 为null

  3、运算符 

     数学运算  

     逻辑运算   短路操作  &&  注意前面的为false时 后面的不用计算了无影响直接跳过

                          ||   前面的为true时 后面的不用计算了无影响直接跳过

                 int a=1; int b=++a; int c=a++;     此时a=3;b=2;c=2;

                 +  连接字符串的作用 "abc+1+2"  连接后为  "abc15"   String a=" "+3.14  对象也可转化成字符串

                 尽量少用连加操作   String s="S"+1+2+2+2+3+32;

          StringBuffer  stringbuffer=new StringBuffer();

          stringbuffer.append("S");

          stringbuffer.append(1);

          stringbuffer.append(2);

          stringbuffer.append(2);

          stringbuffer.append(32);

      位运算

            + 二元    !一元       (4>5) ? 8:9三元true时为前面一个

   4、数值转换 

         强制类型转换 浮点数 长整型

         char 和 short 转换   char b='a' ;  把a转换 b

          5/3=1   5%3=2 除法时有一个为float时为小数  除数为零时违法计算

          浮点数   两个浮点数相除时会出现无穷大infinity    0/0时为 NaN (not a number)

          取余运算   -5%3=-2   5%-3=2  -5%-3=-2  结果只看分子的正负号。

   5、控制语句

       if  else   switch  case (default)

       do  while 循环  for循环

        循环嵌套 最多三层if时contine  结束后面所在的循环的代码不再执行了。90次

                              break   时整个循环跳出循环  91次

        标签循环

      作业

      查找在一个字符串中出现指定字符串的个数

       

 

 

 

    6、调试代码 debug

         int a=10;   int b=2;   int c=(b=15)-a;  输出为:5

    7、数组

      1、基本类型的数组  

         申明   int[] a;正确的使用       int a[];不推荐使用     int[] a; a=new int[10];

         初始化时必须给定长度   输出时a[4];  int[] a; a=new int[]{1,2,3,4,5,6,7,8}; 最后一个逗号不起作用

         建议使用后者  int  a=new int []{1,2,3,4,5,6,7,8}   int  a={1,2,3,4,5,6,7,8}

      2、引用类型的数组

         Dog[] d=new Dog[2]; d[0]=new Dog(); d[0].length=3; System.out.println(d[0].length);

      3、多维数组

         int[][] d;  d=new  int[2][3];

         int[][] d;  d=new  int[][]{{1,2,3},{2,3,4}};

         int[][] d={{1,2,3},{2,3,4}};

         这样也可以的  int[][]d; d=new  int[2][];

     8、增强型循环

        便利操作   for(int i=0;i<a.length;i++){System.out.println(a[i])}   不能保证重复的数据会跳过遍历,可读,可修改a[i]=1;

                   for(int i:a){ System.out.println(i)}; 使用遍历a中的数据  只能读,不能修改。

 

     9、数组大小的调整

        int []a={1,2,3,4,5};  a[3]=2;  要求必须连在一起个数确定不能再修改了,

        System.arraycopy(a,0,b,0,a.length);  复制数组效率比较高

        Arrarys.toString(a)    输出数组中的值

        Arrarys.sort(a);    从小到大排序

       作业

       利用二维数组 ,显示乘法列表

1、面向对象编程  代码重用

      封装    信息隐藏  对象里德字段尽量不要公开  private只有自身可以使用  setter getter

      继承    少写代码的量 修改量变小了  泛化  祖先关系  继承树的关系

      抽象 

      多态

              boolean  set get is

              选中类名    F4可以查看继承关系                Ctr+T 再按下 关系倒置可以看到接口

 

 

                                 default   protected

             相同包  有父子关系     Y          Y

             相同包  没有父子关系   Y          Y

             不同包  有父子关系     N          Y

             不同包  没有父子关系   N          N

             

         

                          相同类  相同包  父子   所有

          private            Y      

          default            Y       Y

          protected          Y       Y      Y    

          public             Y       Y      Y      Y

        

         

        super调用的是父类的方法  super.getName()。

 

        多态特性; 相同的代码可能执行的不同,有对象的实例决定的  比较重要的方法

                   扩展开放  修改关闭

                   异类数组 Employ[] e=new Employ[2]  a[0]=new Employ(); a[1]=new manger();

               instanceof 检查类型是否相同 (e instanceof employee) 返回true和false

 

             if(e instanceof Manager)

               {

                 Manager m=(Manager) e;

                 m.foo();   

                }

 

          方法的重载传参 个数可以改变的 参数是数组时可以用 public void manager(int s,int ... a){  }

 

   作业

      写一个Account类 ,记录账号金额,一个in方法,一个out方法,一个初始值方法,

      out方法记录转出时账上的金额是否足够,用Account类表示四个账户 a b c d;

      各自的初始值为  a:2000,b:1000,c:1500,d:200

      a->b,200

      b->c,500

      c->d,1000

      d把一半的钱转给b

      a->c,2000

      1、最后输出各自账户的余额

      2、c和d的账号允许进行透支,重复上面的过程。

 

1、构造器  一个类必须对应一个构造器,调用构造器是调用对应的参数。

             缺省构造器,没有事编译器会自动添加一个无参数构造器,空的无参函数。保证一个类必须对应一个构造器

             一旦有一个构造器的时候在调用缺省构造器必须自己添加。

            不能互相调用 子类必须调用父类的构造器、

             surper  this 必须是二者选一个都没有时,都没有时调用父类的构造器,只有this时调用自己的构造器

             调用的时候从下面往上面调用,执行的时候从上往下。

             调用的时候会覆盖父类的方法     对象内部的静态方法

    2、Object类

            hashCode  public native int  hashcode();

            equals   == 常量  equals 内部是否相同

            clone  深 浅 之分

            toString

    3、wrapper 包装器八个    Byte     Short     int(Integer)   long    Float    Double    Boolean   char(Character)

             isWhitespace   islettle 

    4、static

              静态变量,静态方法。可以被继承,不是覆盖方法就不存在这种说话发

 

    5、finally  类名前前   不能被别的东西继承

                变量前面   字段,局部变量      不能被修改,如果先前没有赋值,则可以被赋值。

                方法前面   可以禁止子类的覆盖,只能用子类的方法

                private finally static int a=2; 常量(字母全部得大写)Ctr+shift+x   Ctr+shift+y  状态可以改变的

 

 

 

      作业:1、写一个Employee类,代表员工且每个人有一个编号,编号不能重复

               写一个Manager类,manager要有管理的部门,

               输出这两种对象的时候采用两种不同的结果,员工输出字符串显示   emp:编号   Manager经理显示 部门名称+编号

               员工有年龄和名字,对应的setter和getter 方法,不能被子类修改

           

            2、写一个工具方法,把一个任意数组中的成员顺序倒转

 

1、枚举类型  enum

   

2、扑克牌案例  利用 enum的类型举例。

关于牌的问题是可以这样是考试的

1、在54张牌中如何设计一个好玩的游戏

 

 

 

作业,一副牌52张,洗牌之后二人每个人抽两张,比较大小,

 

 

  1、抽象方法抽象方法存在抽象类中

     把继承的所有方法实现实现出来,

   2、接口

     implements 多继承的方法  面向接口编程 XXX能怎么样  扩展开放,修改封闭

     匿名内部内  

    

1、异常处理

     可查异常,运行前可以检查到的,除不可查异常外,其余均为可查的异常。

     不可查异常,运行的时候检查出来的异常 runtimeException

        

     栈的追踪  栈下面的顺序倒着排列的,与上面的顺序相反,

   throw e 直接抛出异常。不再处理了

   finally 作为try后面的代码块一定会被执行,不管有没有异常,有没有catch块,捕获还是没有捕获均被执行

            try里面有return也会被执行的,无论try里面的带码块是什么均被执行

           不要刻意用此方法来控制程序,用正常的for if来判断操作程序的进程

           也可以自己根据需要自己抛出异常,if(s==null){IOException e=new IOException;  throws e}

     assert  断言

     命令

    系统信息user.home,用户地址

      

  System.setErr(null);

 

  作业;

   写一个四则运算的程序,从控制台输入,要运算的表达式,计算结果,输出到控制台页面。

 

 

集合框架

Boolean    add(object a )     加一个对象

Boolean   remove(object a )   移除一个对象

Int size ()

 

Boolean  contains(object

 

Void clear

Iterator 

Object[] toArray()

Object  get (int index)

 

Java gui编程

Awt   abstract window toolkit

 

Swt  (开发myeclice….

Swing 优先考虑的是会在是

Swing的靠frame,

Window fram Dialog

Component

 

Awt swing

 

Container 

add()

setLayout();

invalidate();用在主动激活控件

jcomponent

  setLocation();组建的安定位置的

setsize(width,higth);

setBOUNTS();

SETbounts (Rectangle)

Getsize();换回的是组建的实际是大小、

 setPreferredSize

public void setPreferredSize(Dimension preferredSize)

将组件的首选大小设置为常量值。对 getPreferredSize 的后续调用总是返回此值。将首选大小设置为 null 可还原默认的行为。

参数:

Pack();

Java中的事件监听器

    boolean b =    SwingUtilities.isLeftMouseButton(e);

                  // if(   e.getModifiers() &e.CTRL_DOWN_MASK>0

                  System.out.println("MOuse clicked");

                     }

 

    public void keyTyped(KeyEvent e)

                 { 

//                       char c = e.getKeyChar();

//                       System.out.println(c);

                 // e.getKeyCode()

                     //e.getKeyCode()

                     e.consume();//zujianbei

 

键盘事件以及鼠标事件

键盘事件的

 

小例子

Paper 类监听自身的鼠标事件,在鼠标左键点击的位置画一条线连到一起
diapose.exit.close优先考虑

写一个窗体,有一个状态栏,窗体的中间放一个按钮,当窗体大小改变时,把窗体的大小宣示在状态栏里,

 

鼠标在窗体上移动时,把鼠标上的屏幕坐标显示在状态栏

 

Java 写一个记事本程序,有菜单,文件菜单,格式菜单,

文件菜单有打开,退出,保存,另存

格式菜单有自动换行切换

component 是一个具有图形表示能力的对象,可在屏幕上显示,并可与用户进行交互。典型图形用户界面中的按钮、复选框和滚动条都是组件示例。

  ImageIcon icon;

//Toolkit toolkit = Toolkit.getDefaultToolkit();

    // Image image = toolkit.getImage("c:/windows/web/tips.gif");

    //  

    // g.drawImage(image, 50, 50, 100, 100, this);

           // g.drawIma

 

ImageIo

BufferedImage  getGri();

处理图片的方法

 

边框的效果

label.setBorder(BorderFactory.createBevelBorder(type, highlightOuter, highlightInner, shadowOuter, shadowInner))

工厂模式

 

 

用标签Label模拟一个浮动按钮,点击输出一段文字

 

 

 

动画效果

画图

定时器

Timer

Java .uti(比较精确

Javax.swing

 

Java中 的多线程问题的处理方法的是

实现runnerber的接口的方法

 

//比较;灵活,有独立的咱,共用一个堆

手动线程

Thread main = Thread.currentThread();

//   main.setDaemon(true);

//  t1.yield();  协作

    //t1.join();  合并

不常用

 

常用的有:

 

Thread.currentThread();

Sleep();

 

 

作业“

用一个 线程,从0数到99,间隔一秒

验证间隔是不是一秒

加大线程的个数在测试一次

用定时器在测试一下

System.currentTimeMillis();

 

 

// 线程同步,常用this来处理

将value该为this

 

     synchronized (value)

     {

       value[index] = name + i;

       index++;

     }

在集合类中

 

Vector中的方法也是用synchronized


 

Java 的io输入字节(byte)  inputstream(read(),market

输入字符(char)  reader   都是抽象类要用子类

FileInputstream

 

节点流(new 的对象可以直接用,个数有限,与文件相关的都是,与类存相关的(6)byteArrayInputStream ,charArrayReader,StringReader),处理流(从别处别到的,不能直接被使用)

管道流(pipedInputStream   PipedReader     在线程之间传递数据

缓冲作用


防止难吗问题

inputStreamReader ();

 

outputStreamWrite ();

对象的序列化

ObjectInputStream

对象的结够是一样的

 

Serializable

 

打印流

 

Printwriter

printStream(system.out.();

 

 随即

RandomAccessFile raf = new RandomAccessFile("c:/Test.java", "rw");

         //raf.writeBytes(s)

 

 

 

写一个程序,可以将一个文件夹复制到其他位置,保持内部结构,复制完成后,显示复制总文件个数和字节个数

 

 

Java中的网络编程

原创粉丝点击