`
xxmavetti
  • 浏览: 18376 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java基础(1)

    博客分类:
  • Java
阅读更多

电影票

 

成都电影兑换券(上面图片地址)

 

 

1、 关于java类中的缺省的构造器
如果一个java类没有显式定义没有参数的构造器,将有一个默认缺省的构造器。如果定义了一个有参数的构造器,那么原来的缺省的构造器将不在有效。
public class A{ 
}
此时如果用 new A(); java编译器将使用缺省的构造器。
public class A{ 
public A(int i){ 
}
}
如果此时用 new A(); 将产生一个编译错误,因为此时显式定义了,一个有参数的构造器。


2、Java中的类名与文件名
1、在一个java文件中可以有多于一个类定义(更常见于某些组件的监听器类),但只能有一个public class定义,且与文件同名。
2、如果一个java源文件中没有public类,那么每个类的名字没特殊规则,即不必与文件同名。
3、在编译后产生的class文件中,仍旧是多个单独分开的class文件。


3、import关键字
1、import语句必须定义在所有的class定义之前。
2、import语句只是为编译器指明了一个路径,并不像C或C++中的#include,所以用import .*并不影响性能


4、Java中的几个特殊关键字
Java中的关键字许多大家都比较熟悉,而有几个就不是很常用,如:
1、goto和const是保留关键字,在java中没使用
2、strictfp和volatile不常用; sizeof、zhen不是关键字。
3、true,false,null不是严格意义上的关键字,而是literals。

  
5、java方法中的传递值参
在Java方法中传递参数,对于基本类型来讲传递的是值参数,相当于建立的一个参数的拷贝,不影响原来变量的值。
在引用方法中可以改变传递对象的内容,但对象引用(像A@5d87b2)从来不会改变。

public class tt{ 
public static void main (String args[]){
  A aa = new A();
  aa.num =5;
  tt t = new tt();
  System.out.println("11 aa="+aa + "num="+aa.num);
  t.test(aa);
  System.out.println("22 aa="+aa + "num="+aa.num);

void test(A a){
  A ab = new A();
  a = ab;
  System.out.println("33 ab="+ab + "num="+ab.num);

}
class A{ 
int num;

  
6、变量初始化
java中的变量在使用之前必须被初始化,当创建一个对象的时候一些类的变量会自动初始化并赋予缺省值。
数字类赋值0;char类型赋值''\u0000''; boolean类型赋值false;引用对象赋值null;
注意的是在方法之外的类变量的值是自动赋初始值,而方法内的局部变量必须手工初始化。 

class AA{ 
int num; 
void test(){
  int j;
  j =5;//没有这一行则编译不会通过。
  j = j+num;
}

  
7、switch语句
这个点经常在求职笔试题目中出现。default放在最上边编译没问题;碰到符合分支的,如果没有break会一直向下运行。 

public class tt{ 
public static void main (String args[]){ 
  tt t = new tt(); 
  t.test(2);//可改变成3运行一下看一下结果 

void test(int i){
  switch (i){
    default: 
    System.out.println("default"); 
    case 1: 
    System.out.println("111");
    break;
    case 2:
    System.out.println("222");
    break; 
  }


  
8、关于java中的label使用
? break [label]
? continue[lbele]
? lable: statement; //这里的statement必须是一个loop循环
public class tt{ 
public static void main (String args[]){ 
  tt t = new tt();
  t.test(); 
}
void test(){ 
  System.out.println("0000");
  lb1:for (int i=0;i<10;i++){
    lb2:for (int j=0; j<2; j++){
      if (i==2) continue lb1;
      System.out.println("i="+i +" j="+j); 
    } 
  }
  System.out.println("111111"); 


  
9、类型转换校正
class Employee
      |
class Manager
向上校正,总是允许的,Manager直接使用父类Employee的方法。
向下校正,必须用instanceof检验,才能将一个Employee转换为Manager对象。

public void test(Employee e){
if (e instanceof Manager){
  Manager m = (Mnager)e;
  ...
}

  
10、方法重载(overloading)、方法覆盖(overriding)

方法重载(overloading)一定要求名字相同,参数不同,返回类型可以相同也可以不同

class A{ 
void test(int i){ 
}
}
class AA extends A{
int test(int i, int j){
  return 5; 


注:方法覆盖(overriding)要求名字,参数,返回类型全部必须相同,访问控制符可以不同,但必须大过父类的。因为如果名字和参数都已经相同了则一定要求返回类型相同,否则认为这是一个新的方法了,名字就必须不同了。

class A{ 
void test(int i){ 
}
}
class AA extends A{
public void test(int i){//若是换成private则编译不通过。 

}

注:关于覆盖方法抛出异常的问题。如A是父类,B是继承A的子类。B中的方法meth()去覆盖父类A的此方法时,B中不能throws出新的异常,只能是父类抛出的异常或其子集。更甚至可以不抛出异常。 

  
11、关于类的构造器重载问题

class A{
public A(int i){

}
class AA extends A{
public AA(){
  int i = 5; // 这里出错,没有父构造器 
}

由于父类A自定义了构造器,所以缺省的构造器就丢失了,当子类的构造器自动试图调用父类没参数的构造器时却没有,所以会编译出错。 

  
12、关于static关键字总结:
1、不能在static修饰的方法中引用this变量,只能引用一些静态变量或方法,或new新的对象(可以定义局部变量)。
简言之,静态方法或块中,只能引用静态的方法或变量。
2、类中的成员变量(static修饰)有缺省值,而类的定义的方法中的局部变量没有缺省值。
3、在类的构造器中,可以引用任何的静态或非静态的变量和方法,可以在非static方法中调用static方法。
4、static{}块中的代码在类装载中仅执行一次。
5、在7-7,A static method cannot be overridden but can be hidden. 不理解。
6、不能在无论非static方法中或static方法中定义static变量。 

  
13、关于final关键字
1、不能继承final修饰的类,不能覆盖final修饰的方法。
2、final修饰的变量,若没赋值,必须在构造器中赋初始值。

class A{
final int j;
public A(){ 
  j = 9;//若没有此行,则编译不通过。 

}
3、final类型的方法参数可定义,但不能改变。
class A{
void m(final int i){ //这一行的声明i为一个final没问题。
  i ++ ; //但在这里面,i的值不能再被改变。 
}


  
14、Interface接口关键字
1、接口中的变量
  1、必须初始化其值。
  2、默认修饰符为public+static+final,其他的修饰符不允许。
2、接口中的方法
  1、默认为public+abstract
  2、其它修饰符 static,private,protected,final,synchronized,native均不能有。

interface A{
void s();
}
class AA implements A{
void s(){ //编译器在这里提示由于接口中的方法s()修饰符默认是public,
        //而这里的s()默认是protected,小于public所以不允许。
}


  
15、abstract抽象关键字
abstract class A{
private int i; 
private void m();{}

抽象类中可以有私有的变量和私有属性,而接口就不行(原因如上),
这是因为java是按实例虚拟调用的,在生成某一个具体的对象可以有私有的属性或方法的。

abstract class A{
private int i; 
private void m(){};
public abstract void n();//若是private则编译不通过。
}
抽象类中的抽象方法是让其他类继承的,如果本身都是私有的,就没有什么意义了 

  
16、集合类型
以有无顺序,允许不允许重复区分
Collections: 一组对象,无序集合,允许重复
Set:无序集合,不允许重复
List:有序集合,允许重复
注意:在JDK1.1中定义的集合类型,都是线程安全的,所以都是“重量级”的。像HashTable,Vector
而在java2中定义的一些新的集合类型如HashMap, ArrayList不是线程安全的,是“轻量级”的,但速度快,性能好。这一点在许多公司面试试题都见过。 

  
17、布局管理器
FlowLayout,BorderLayout,GridLayout,CardLayout
关于Panel和Frame默认的Layout常在一些公司的面试试题中出现。
1、Panel和Applet类默认的布局管理器是FlowLayout 一个一个的加上去
2、Frame和window类默认的布局管理器是BorderLayout 按东南西北加入
3、xyLayout是Borland公司开发的布局管理器。 

  
18、面试试题中Applet部分
1、使用代码
  
    
  
2、可以覆盖的方法init(),start(),stop(),destory(),paint(g) 

  
19、面试试题中线程部分
1、基本实现方式两中,继承Thread类和实现Runnable接口
2、必须实现父类或接口中的run()方法。
3、有关线程方法,start()启动线程。
  join()指在调用这个线程的方法或进程中,必须等待此线程运行结束才能继续其他进程。
4、线程中的同步synchronized,注意死锁。 

  
20、对象串行化
1、仅仅对象类型的数据可以串行化。
2、标记为transient的数据不可以串行化。
存储一个对象到某种永久性存储叫persistence,如存储到磁盘、磁带或别的机器的内存中。
java.io.Serializable接口没有定义方法要实现,仅仅是一个标记暗示实现了这个接口的类可以被考虑串行化。没有实现这个接口的对象不能保存或存储它们的状态。
当一个对象被串行化的时候,仅仅数据被保留,而方法和构造器不是串行化的部分。
一些对象类是不能串行化的因为他们代表的数据是经常变化的。如java.io.FileInputSream和java.langThread。如果串行化的对象包含了不可串行化的对象,整个串行化动作会失败,并抛出NotSerializableException。 

  
21、java中的网络通讯

一般的TCP/IP网络数据通信主要可分2种,TCP和UDP

TCP:TCP是面向连接的通信协议,就像打电话,先要拨通建立连接,传送的数据不会丢失。
  java提供了ServerSocket和socket类。在server端,建立一个serverSocket,并指定端口,并侦听连接。

服务器端代码 
ServerSocket sc=new ServerSocket(1111);
Socket socket1= sc.accept();
DataInputStream s_in = new DataInputStream(socket1.getInputStream());

客户端代码 
Socket socket2 = new Socket("192.168.1.1",1111); 


UDP:UDP非面向连接,就像写信,将传输的数据包成一个分组,可能有数据丢失

服务器端代码
DatagramSocket server = new DatagramSocket(1234);
DatagramPacket in_packet =new DatagramPacket(in_buf,2000);
server.recieve(in_packet);

客户端代码
DatagramSocket client= new DatagramSocket(1235);
DatagramPacket out_packet= 
            new DatagramPacket (out_buf,100,"192.168.1.1",1234);
client.send(outPacket);

  
22、String对象
一 般讲来创建的两个对象如果用==来比较肯定是不等的,因为他们的引用地址是不同的,而==是对于对象来讲是比较对象地址的。但对于String对象来讲是 一个例外,两个String对象如果值相同,==比较也是相同的。我想这可能与Sun公司对String对象定义有关。

public class tt{ 
public static void main (String args[]){ 
  tt t = new tt(); 
  t.test(2); 

void test(int i){
  String s1 = "123";
  String s2 = "123";
  if (s1==s2) 
    System.out.println("111111");
  else
    System.out.println("2222222");

}
结果输出:111111

分享到:
评论

相关推荐

    Java入门必学实训教程 Java软件开发实战 Java基础、开发框架、类库、web开发 已分类全套共50多份PPT课件.rar

    Java基础 1.java入门知识 Java基础 10.枚举与泛型 Java基础 11.多线程 Java基础 12.注解 Java基础 13.反射 Java基础 14.嵌套类等 Java基础 2.java简单知识 Java基础 3.类 Java基础 4.类构造函数_this_静态属性方法_...

    JAVA零基础到高级进阶特训营 JAVA多线程并发设计+Spring高级+数据库开发+JAVA基础等

    这套课程既可以作为从零基础开始学习的JAVA基础到高级学习教程,对于有JAVA基础的同学来说可以略过前面的JAVA基础章节,直接学习后续的JAVA高级部分课程。更可以灵活的作为章节技术,进行针对性的JAVA学习。还是要...

    免费开源Java 基础镜像

    Fabric8 Java 基础镜像 这是各种 Fabric8 项目中使用的 Java Docker 基础镜像的存储库。 这些镜像的 Docker 构建文件由Fish-pepper生成 ,fish-pepper 是一个用于生成 Docker 构建的复杂模板系统。fish-pepper允许...

    《Java基础入门》-课后习题答案.doc

    本文将对《Java 基础入门》课后习题答案进行总结,涵盖了 Java 基础知识点,包括 Java 开发入门、Java 基础类、变量类型、运算符、控制流语句、方法重载等。 一、Java 开发入门 * Java EE、Java SE、Java ME 是 ...

    JAVA 基础有由浅入神中高级视频

    市面上目前流传的java基础视频教程都是讲一些最基础的java语法和相关API的应用,然而用人单位对初级程序员的要求越来越高,那些讲解java基础语法的视频教程已经无法满足大众的学习要求。本套视频教程录制完中国第一...

    Java基础加强系列视频课程

    资源名称:Java基础加强系列视频课程资源目录:【】黑马程序员Java基础加强(01-10)【】黑马程序员Java基础加强(11-20)【】黑马程序员Java基础加强(21-30)【】黑马程序员Java基础加强(31-40)【】黑马程序员...

    java基础知识大全(必看经典)

    * 1996 年 1 月:网景公司决定在 Netscape2.0 加入对 Java 的支持,从此 Java 开始流行。 * 1996 年初:SUN 公司发布了 Java 1.02,但遗憾的是,Java1.02 还未摆脱其小型语言的影子。 * 1998 年:Java 语言成熟,...

    Java基础 学习笔记 Markdownr版

    1. 面向对象(OOP):Java的核心是面向对象编程,它将数据和操作数据的方法封装在一起,形成类。面向对象的三大特性——封装、继承和多态,在06面向对象(上)、07面向对象(中)和08面向对象(下)中进行了详细介绍...

    java基础知识 ppt

    java基础知识,帮助初学者更快更好地掌握java。ppt内容具体易懂,希望对刚接触java的初学者有所帮助。

    java基础整合.docx

    java语法基础 java语法基础 java语法基础 java语法基础 java语法基础 java语法基础 java语法基础 java语法基础 java语法基础 java语法基础 java语法基础 java语法基础 java语法基础 java语法基础 java语法基础

    《Java基础入门(第3版)》(Java):课后答案-docx文档

    《Java基础入门(第3版)》是一本针对Java初学者的教材,其课后答案文档提供了对书中习题的解答,旨在帮助读者巩固所学知识。Java是一种面向对象的编程语言,具备跨平台性,由Java虚拟机(JVM)负责解释执行。Java...

    Java基础实例大全.

    Java基础实例大全适合于初学者 这里是所有Java技术点的集合 每个技术点都有对应的例子。 经典制作不容错过。。。 特别是对Java书籍很迷惑,想看看实际例子的朋友,这里就有你所需要的. Java基础实例大全适合于初学...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-087-Java基本语法-控制语句-if语句程序举例1.avi 北京动力节点-Java编程零基础教程-088-Java基本语法-控制语句-使用Scanner.avi 北京动力节点-Java编程零基础教程-089-Java基本...

    java基础笔记

    java基础 在命令行 控制台下的dos命令: 切换盘符 d: 进入某个目录 cd: 查看一个目录下有什么东西:dir 编译时 javac 源文件名 java 运行的时候 java 含有main方法的 类名 注意:不要写 class 公有的 public 的类 其...

    java 基础异常 java 基础异常java 基础异常java 基础异常

    java 基础异常 java 基础异常java 基础异常java 基础异常java 基础异常 java 基础异常java 基础异常java 基础异常java 基础异常 java 基础异常java 基础异常java 基础异常java 基础异常 java 基础异常java 基础异常...

    java基础练习题(基础)精选

    Java基础练习题由本人整理并上传,非常适合于初学者加强巩固自己的知识,编程学好的唯一途径就是多练习。

    java基础知识的培训ppt

    java基础知识的培训ppt,对于java初学者来说可以有一些作用。

Global site tag (gtag.js) - Google Analytics