Java总结

这篇博客详细介绍了Java的基础知识,包括Java的历史、环境搭建、数据类型、命名规范和流程控制。深入讲解了类和对象的概念,如成员变量、局部变量、构造方法和静态特性。此外,还涉及了Java的进阶主题,如面向对象编程、抽象类和接口,以及异常处理和集合框架。博客内容全面,适合Java初学者和进阶者学习。
摘要由CSDN通过智能技术生成

时尚、时尚、最时尚,爱不释手是JAVA

java是一门很好的语言,也是一门庞杂的系统,学习过程中要善于记录和积累。


一、java基础:

1、java简介

(1)java历史

(2)重要概念

javaSE(标准版) javaEE(企业版) javaME(微型版)
JDK(java开发工具包)JRE(java运行环境)IDE(集成开发环境)
- Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。 J2SE就是做那种桌面安装程序样的,像QQ,WORD那种应用程序。
- Java EE(Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。 J2EE 就是做基于Internet的应用程序,像选课系统,企业网站,银行系统之类的。
- Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。 J2ME就是做嵌入式系统开发的,像手机游戏之类的,像现在流行的Android操作系统。
- JDK(Java Development Kit)。
- JRE(Java Runtime Environment)
- IDE(Ind Depvelopment Environment)

2、环境搭建

JDK、Eclipse

(1)下载

(2)安装

(3)配置

3、数据类型

(1)基本数据类型

byte char boolean short int long float double
简单说明:byte 8个bit 因为是有符号的所以取值范围(-128~127) ;char和short 16个bit,char是无符号的取值范围(0~65535) ; int和float 都是32个bit ;long和double都是64个bit
byte和char的区别:1.Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127的数;2.char可以表中文字符,byte不可以;3.char、byte、int对于英文字符,可以相互转化

public class DataTypeTest {
   

    public static void main (String[] args){
        DataTypeTest dtt = new DataTypeTest();
        dtt.testByte();
        dtt.testChar();
        dtt.testChange();
    }
    /**实验byte
     * Char是无符号型的,可以表示一个整数,不能表示负数;
     * 而byte是有符号型的,可以表示-128—127 的数
     */
    public void testByte(){
        byte b1 = 1;
        byte b2 = -1;
        byte b3 = -128;
        byte b4 = 127;
        char c = (char) -3;//char不能识别负数,强转一下编译器不会报错,但是仍无法识别
        System.out.println(b1);//1
        System.out.println(b2);//-1
        System.out.println(b3);//-128
        System.out.println(b4);//127
        System.out.println(c);//?
        System.out.println("------------------");
    }
    /**实验char
     * char可以表示中文字符,byte不可以
     * char类型在存储的时候就是整数,对应一张Unicode编码表
     * 'A'对应65,而'a'对应97,所以char类型可以和int类型进行运算
     */
    public void testChar(){
        char c1 = '中', c2 = '国' , c3 = 1;
        byte b1 = (byte)c1;//45
        int i = '中'+1;//20014
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(b1);//问题:输出的数字的含义
        System.out.println("i="+i);
        System.out.println("------------------");
    }

    /**char、byte、int对于英文字符,可以相互转化
     * 
     */
    public void testChange(){
        byte b = 'b';//98
        char c1 = (char)b;//b
        char c2 = 'c';//c
        int i = c2;//99
        System.out.println(b);
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(i);
        System.out.println("------------------");
    }
}    

Q&A

  1. 给char类型赋值数字
    Java中对char型数据,在内存中存的就是整数,char在java中是unicode编码 ,字符 ‘A’ 对应的十进制数字是65,字符 ‘a’ 对应的十进制数字是97 ,所以char c1 = ‘A’ ; 等效于 char c1 = 65 ;
    所以,char型数据可以和int型数据进行运算!比如 ‘a’ + 1的结果如果用char型变量接收就是 ‘b’ , 用int型变量接收就是98。虽然char型是以整数存储,但是和int型还是有一定区别的,表现在取值范围上,char型 占2个字节 无符号 范围是0~65535 。所以char c = 65536 就会报错了,因为越界了。
    基本数据类型总结
基本数据类型 分类 大小 取值范围 默认初始值
byte 整型 1字节 8bit 【-128 127】 0
int 整型 4字节 32bit 【-2*10^31 2*10^31-1 】 0
short 整型 2字节 16bit 【-2*10^15 2*10^15-1 】 0
long 整型 8字节 64bit 【-2*10^63 2*10^63-1 】
char 字符型 2字节 16bit 【-2*10^31 2*10^31-1 】
float 浮点型 4字节 32bit 【3.402823e+38 ~ 1.401298e-45】
double 浮点型 8字节 64bit 【1.797693e+308~ 4.9000000e-324】

(2)对象/引用数据类型

String 和 自定义类 接口 抽象类
String、StringBuffer和StringBuilder三者的区别:1.String是常量,StringBuffer和StringBuilder是变量,修改时不生成新的对象,内存使用上占优势;2.StringBuffer是线程安全的,StringBuilder非线程安全;3.执行速度:(StringBuilder,StringBuffer)>String;
综上所诉:1.当数据量不是很大的时候用String;2.单线程用StringBuilder;3.多线程用StringBuffer 三者区别详解

4、命名规范

只有确保了命名的唯一性和描述性,才能保证资源之间不相互冲突并且便于理解记忆。
① 标识符的组成:字母,数字,下划线,$,不能以数字开头,不能使用关键字和保留关键字。ps:关键字是指java中已经定义的具有特定功能的标识符,不能用作普通标识符
Alt text
② 包的命名
Java包的名字都是由小写单词组成。每一名Java程序员都可以编写属于自己的Java包,为了保障每个Java包命名的惟一性,最新的Java编程规范要求程序员在自己定义的包的名称之前加上惟一的前缀。由于互联网上的域名是不会重复的,所以程序员一般采用自己在互联网上的域名作为自己程序包的惟一前缀。
例如:net.frontfree.javagroup。
③ 类的命名
类的名字必须由大写字母开头,一个单词中的其他字母均为小写。如果类名称由多个单词组成,则建议将每个单词的首字母均用大写,例如TestPage。如果类名称中包含单词缩写,则建议将这个词的每个字母均用大写,如:XMLExample。由于类是设计用来代表对象的,所以建议在命名类时应尽量选择名词。
④ 方法的命名
方法的名字的第1个单词应以小写字母开头,后面的单词则建议用大写字母开头(驼峰原则)。
例如:sendMessge()。
⑤ 常量的命名
常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则建议用下划线来分割这些单词。
例如:MAX_VALUE。
⑥ 参数的命名(驼峰原则)
参数的命名规范和方法的命名规范相同,而且为了避免阅读程序时造成迷惑,请在尽量保证在参数名称为一个单词的情况下,参数的命名尽可能明确。**注意:**1、类的属性允许不进行初始化;2、方法内部的变量要进行初始化
⑦ javaDoc注释
Javadoc注释是一种多行注释,以/*开头,而以/结束,注释可以包含一些HTML标记符和专门的关键词。使用Javadoc注释的好处是编写的注释可以被自动转化为在线文档,省去了单独编写程序文档的麻烦。例如:

    /**
*This is an example of
* Javadoc
*
*@author darchon
*@version 0.1, 10/11/2002
*/
//单行注释
块注释
/*注释快*/

在每个程序的最开始部分,一般都用Javadoc注释进行程序的总体描述以及版权信息。在主程序中可以为每个类、接口、方法、变量添加Javadoc注释,每个注释的开头部分先用一句话概括该类、接口、方法、变量所完成的功能,这句话应单独占据一行以突出其概括作用,在这句话后面可以跟随更加详细的描述段落。
在描述性段落之后还可以跟随一些以Javadoc注释标签开头的特殊段落,例如上面例子中的@auther和@version,这些段落将在生成的文档中以特定方式显示。
虽然添加注释不会使一个设计低劣的程序变成好的程序,但是如果按照编程规范编写程序,并且为程序添加良好的注释,却可以帮助编写出设计优美、运行高效且易于理解的程序,尤其在多人合作完成同一项目时,编程规范非常重要。俗话说”磨刀不误砍柴工”,花费一点时间去适应一下Java编程规范是有好处的。

5、流程控制

分支语句(条件语句)
循环语句()

6、类和对象

(1)辨析成员变量、局部变量和全局变量

成员变量:在类体的变量部分中定义的变量,也称为属性。
局部变量:是指在程序中,定义在特定的方法或语句块的变量,是相对与全局变量而言的。
成员遍历和局部变量的区别

public class Test{
   
  int a=0; //全局变量
  public static void main(String[] args){
  int b =0//局部变量
    }
}

1.定义的位置不同:成员变量直接定义在类内部,局部变量是定义某个方法体内部;2.作用域不同:成员变量适用于整个类和与该类相关的类,局部变量只适用于该方法内部;3初始值不同:成员变量可以不显式初始化它们可以由系统设定默认值,局部变量没有默认值,所以必须设定初始赋值;4.不同方法可以有重名的局部变量;5.如果类变量和局部变量重名,局部变量更有优先级;

成员变量又可以细分为:实例变量、类变量(静态变量)

public class Clothes 
{
    
String id; //实例变量 
private String colorType; //实例变量 
private int size; //实例变量 
private static String depart; //类变量 
final String design="yangzi"; //常量 
}

实例变量和类变量的区别
1.实例变量:不用static修饰,它只能通过对象调用而且所有对象的同一个实例变量是共享不同的内存空间的;
2.类变量:又叫静态变量,用static修饰,它可以直接用类名调用也可以用对象调用,而且所有对象的同一个类变量都是共享同一块内存空间的;

(4)Java的构造方法

 1.程序运行的时候构造方法就被加载;2.每个类都有构造方法,如果程序员给类提供构造方法,编译器会自动创建一个默认的构造方法;
 3.构造方法重载类似于方法的重载,一个类可以有多个构造方法,但参数列表必不同。

(5)static(静态变量、静态方法和静态初始化块)

含义:“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。Java中static方法不能被覆盖, 因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。
是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。这样做有什么意义呢?
在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用static声明的(在这里所讲排除了类的访问控制)
静态变量和静态方法:
1.静态变量可以直接被类和对象调用;2.静态方法中不能直接调用非静态变量和非静态方法,可以通过创建对象调用;3.普通方法中可以直接调用 类中的静态和非静态变量;
实例:

public class HelloWorld {
    static String s = "你好,静态变量!";// 静态变量
    String s1 = "你好,我是非静态变量!";

    public static void say() {
        System.out.println("你好,我是静态方法,我被调用了");
        // System.out.println(s1); 这句编译器会报错,因为静态方法中不能调用非静态变量
        // 如果想在静态方法中调用非静态变量,可以创建类的对象,通过该对象调用非静态变量
        HelloWorld hw = new HelloWorld();
        System.out.println("我是通过在静态方法中实例化类,通过类调用静态变量:" + hw.s1);

        // 静态方法中不能直接调用非静态方法,需要创建对象来调用
        // shuo(); 编译器会报错
        hw.shuo();
    }

    public void shuo() {
        System.out.println("你好,我是普通方法,我被调用了");
        System.out.println(s);
        System.out.println(s1);
    }

    public
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值