本文适合于已经有c/c++基础的同学看

一  基本知识

1 数据类型

类似于c/c++

对于long类型常量书写时,要在数字后面加上L或者l。0L
    对于float类型常量书写时,要在小数点后面加上F或者f。0.0F
    对于double类型常量书写时,要在小数点后面加上D或者d。 0.0D

数据类型之间的转换
Java中也有隐式转换(Java则叫做自动转换)和显式转换(Java则叫做强制转换)。自动转换由编译器实现,强制转换则由用户编程实现,再由编译器执行。

自动转换的规则:低级数据类型 ==》 高级数据类型;所占字节数低的数据类型 ==》 所占字节数高的数据类型
例如:byte short int long(整数类型) ==》 float double(浮点数类型)
      byte short(8字节和16字节) ==》int(32字节)
      byte short int(8字节,16字节和32字节) ==》 long(64字节)
      float(32字节) ==》 double(64字节)
      char(16字节) ==》 int(32字节)
注:整数类型中的long,虽然占64个字节,但是却能自动转换成float类型(32字节)。因此,我认为,在自动转换的过程中,先考虑数据类型的等级高低,再考虑数据类型的所占字节数。

再注:从简单数据类型图中不难看出,各数据类型的长度均为固定值,这使得Java能够在不同的平台上运行相同的Java程序时不用修改代码,提高了程序的可移植特性。

2  头文件

(1)类似于c++的命名空间或者是头文件

在JAVA中叫做包(package)。Java的核心包中,我们常用的有这样5种:
(1)java.lang , 封装了所有编写java程序所需要的基本类,包括Object、Class、System等。其中,Object类是所有类的根类,任何类都是继承该类而建立的;Class类是由编译器动态生成对象的一个伴随每一个类的特殊类;System类是一个final类,主要提供标准I/O和对系统环境信息的访问等,这个类不能被实例化。
(2)java.awt , 窗口工具包,提供操作图形用户界面的基本功能。
(3)java.applet , 封装Applet类的包,提供Applet执行时需要的类。
(4)java.io , 封装I/O操作的包。
(5)java.util , 提供使用程序类以及集合类等常用的工具类。

3 程序结构

首先,是package语句,用来指定源文件所在的包。

然后,是public classDefinitiom,也就是公共类,用来指定源文件的类名,这个类名要与源文件名相同,可有0个或1个。
再然后,是classDefinition,也就是一般类,可以有若干个,也可以没有。
注:一个java源文件中,最多只能有一个public类,且必须与文件名相同。

我们的第一个程序:

import java.lang.*;
import java.io.*;

class matrix  //一般类 
{     
    void luoyang1()
   {   } 
}

public class Matrixkey //public类,类名要与文件名相同
{     
     public static void main(String args[])
     {
        System.out.println("很高兴认识你,我是Matrixkey");
      }
}

4 Java的解释执行

在系统运行Java程序时,Java编译器将Java程序(*.java文件)转化为字节码(*.class文件),在运行时,解释器将编译得到的字节码进行解释执行。
Java语言一个源程序可以含有多个类(public类最多一个),每个类编译都生成一个字节码文件。也就是说,有几个类,就有几个字节码文件。
这就是,我们在执行一个Java程序时要先用javac *.java将Java程序转化为字节码的原因。
注:Java区分大小写,因此上面的程序中,public类的类名:Matrixke,那么这个java程序的文件名必须为:Matrixkey.java

5 输入输出

输出使用println方法。println方法的使用方法如下:

System.out.println( x );

System是java.lang.*包中的类,out是System类的一静态属性,而println()是out属性的一个静态方法。该方法用于打印后再换行,可以打印基本类型的数据以及字符串等,'+' 在字符串中代表将字符串相互连接。

        int x = 4772;
        /* 输出一个字符m */
        System.out.println(m);  
       
        * 输出一个数字4772 */
        System.out.println("变量x等于"+x); //或者直接System.out.println(x);
     
        /* 输出一个字符串matrixkey */
        System.out.println("matrixkey");

/* 输出汉字落阳*/
        System.out.println("落阳");

println方法打印后自动换行,因此,下面2条代码输出结果是一致的

int x = 100;
System.out.println(x);
System.out.print(x + "\n");

注意:"+"号用来连接字符串是有点麻烦的! 例如:
System.out.println(1+2+"3"); 
Sysrem.out.println("1"+2+3); 
'+'号优先级别,从左到右 
所以打印结果是这样的:
33(先做1+2 变成字符串"3" 连接后面的"3",所以打印33) 
123(先把"1"和2连接成为"12",在连接3就变成"123")

6 运算符和流程控制

C/C++类似,注意switch不能做实数的判断

二 类

1 概念

类作为JAVA程序的基本要素,由成员变量(即属性)和成员方法组成,必须先定义在使用。
类声明格式:[修饰符] class 类名 [extends 父类名] [implements 类实现的接口列表]
(1)修饰符用于确定类的访问控制权限(public和friendly)以及类型(abstract和final)
(2)类名是合法的标识符,并且首字母大写
(3)保留字extends指明声明的类所继承的父类
(4)[ ]里的内容可选

/* JAVA中类的声明和继承*/
public class Matrixkey
{成员变量
 成员方法}
 class Matrix extends Matrixkey

/* C#中类的声明和继承*/
public class Matrixkey
{成员变量
 成员方法}
 class Matrixk : Matrixkey

类体格式:class 类名 {成员变量 成员方法}
其中成员变量定义的格式为:<修饰符> <类型> <变量名称>
        成员方法定义的格式为:<修饰符> <返回值类型> <方法名称> ( [ <参数表> ] )
(1)成员变量和成员方法可以通过public private protected等修饰符控制访问权限
(2)java中,方式是通过值传递参数,而不是通过地址,因此方法不可以改变参数的值
例:

public class Matrixkey  //类声明
 { public int a;
    public double b;        //成员变量的声明
    
    static void Min(double c)  //成员方法的声明 
 }

类成员的修饰符有两种
访问限定符:public  可以被外部类访问
                        protected  可以被同一个包中的类以及该类的子类访问
                        private  只能在该类内部被访问
                        default  可以被同一个包中的类访问
非访问限定符:静态修饰符 static
                            最终修饰符  final
       抽象修饰符 abstract  syncronized

2 类的继承

在java语言中,类继承是通过extends保留字实现的,格式为:

 class Subclass extends Superclass {...}

(1) 用extends指明新定义的子类(Subclass)的父类(Superclass),就在两个类之间建立了继承的关系
(2)子类可以从父类继承所有非private的属性和方法作为自己的成员
(3)若子类成员变量的名字 和 父类成员变量的名字 相同,则子类成员隐藏父类成员
(4)若子类成员方法 与 父类成员方法的名字,返回值类型,参数表都相同,则子类方式是父类方法的重写
(5)方法重写时注意:子类方法的访问权限要高于父类

子类方法的访问权限比父类方法的访问权限要高,一般用Super关键字来访问父类的方法和变量,但是父类的对象不能直接访问子类的方法和变量

3  数组

定义一维数组的格式:<类型> <数组名> [ ]; 或者 <类型> [ ] <数组名>;
因此,int A [ ]; int [ ] A ; 两者是相同的
(1)<类型>可以是简单或者复杂数据类型
(2)进行数组定义时,不分配内存,因此不要求给出其元素的个数
(3)数组分配内存通过new操作符或静态初始化实现
创建一维数组的格式:<数组名> = new <类型> [ <数组大小> ];
                                          A = new int [3];
定义的同时创建:<类型> [ ] 数组名 = new <类型> [ <数组大小> ];
                                 int [ ] A = new int [3];
初始化数组:对已定义的数组元素赋值,有动态和静态两种方式
(1)当初始化元素数目较少,采用静态初始化
            int A[ ];
            A[0] = 1; A[1] = 2;A[2] = 3;
(2)对简单类型,定义数组的同时,用new操作符进行初始化
           int [ ] A = new int [3]{1,2,3};
(3)当初始化元素数目较多,可以利用循环语句对数组元素动态初始化

多维数组
定义的格式:<类型> <数组名> [ ] [ ];  或者 <类型> [ ] [ ] <数组名>;
初始化:在定义的同时对数组元素进行赋值(静态)
                可以按顺序直接对每一维分配内存或从最高维开始对每一维分配内存(动态)

数组操作
(1)方法arraycopy()用来进行数组的拷贝
(2)ArrayList类用来动态调整数组的大小

4 字符串的表示

(1)用String类表示字符串,String类的对象表示的是固定长度的字符串
(2)用StringBuffer类表示字符串,StringBuffer类的每个对象都是长度可变的字符串
字符串的操作
(1)对String的修改
String类提供了concat() replace() substring()方法分别实现字符串的连接,替换,取子串的操作;“+”运算符也可以用来连接字符串。
(2)对StringBuffer的修改
 StringBuffer类表示的是可变长度的字符串,使用它,就可以方便地在字符串中插入或在字符串尾追加字符。相应的方法是:insert(),setCharAt(),append()。
(3)判断两个字符串是否相等,使用equals()方法

三  异常处理

参考类似c/c++。
对于try和catch子句的排列方式,下列哪个是正确的?
A。 子类异常在前,父类异常在后
B。 父类异常在前,子类异常在后
C。 只能有子类异常
D。 父类异常和子类异常不能同时出现在同一个try程序段内
解析:在java语言中,在捕获父类异常时对其子类异常也捕获了,根据try与catch的匹配原则,尽量使用一个父类去捕获其所有子类的异常,而父类和子类异常是可以同时出现的。
答案:A

以上内容总结自:http://www.matrixkey.com.cn/blog/default.asp?CateID=7&distype=list

http://caterpillar.onlyfun.net/Gossip/JavaGossip-V1/JavaGossip.htm

转载于:https://www.cnblogs.com/catkins/archive/2012/11/03/5270714.html

java速成----一篇博文搞定基础相关推荐

  1. 一篇博文搞定申请技术专利流程

    这篇文章整理一下申请技术专利相关的流程.注意事项等相关内容. 专利的分类 在专利法第一章总则的第二条中,明确了专利的三种类型:发明.实用新型与外观设计 专利类型 说明 发明 是指对产品.方法或者其改进 ...

  2. ELK系列(十五)、Elasticsearch核心原理一篇全搞定

    目录 Lucene 介绍 核心术语 如何理解倒排索引? 检索方式 分段存储 段合并策略 Elasticsearch 核心概念 节点类型 集群状态 3C和脑裂 1.共识性(Consensus) 2.并发 ...

  3. new hashmap 初始大小_害怕面试被问HashMap?这一篇就搞定了

    来源于公众号编码之外 , 作者庆哥小白 话说以下这篇与本篇配合阅读最佳哦(jdk1.8为主) 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap ...

  4. 这篇文章搞定你关于Origin Pro的所有问题!快来看看吧!

    Origin是全球商业,学术和政府实验室超过50万名科学家和工程师的首选数据分析和绘图软件.Origin为初学者提供了易于使用的界面,并且随着您对应用程序的熟悉程度越来越高,可以执行高级定制. 凭借超 ...

  5. java调用大漠插件一键搞定!!!!!!!!!!

    本人java爱好者,最近想要通过java调用大漠插件,实现一些脚本.但是发现java调用大漠插件的文章在网上太少啦,自己经过长达一周的实践和测试,总算是可以通过java调用大漠插件了,也算是给小伙们避 ...

  6. 树莓派Raspberry 4B+ 一篇快速搞定新版树莓派系统无屏幕初装+SSH连接+桌面显示

    一.材料准备 raspberry 4B+,16g内存卡,usb读卡器 二.软件准备 Raspberry系统镜像:存储卡工具:SD Card Formatter:镜像烧录工具:Win32DiskImag ...

  7. 超硬核Python避坑学习方案奉上!入门到就业一篇就搞定!

    本文收录了python从基础入门到高级进阶,再到之后发展方向的详细介绍,欢迎小伙伴们关注阅读!相信对你的python学习之路定能助一臂之力!评论提出你的见解!大家一起为你解答! 目录 一.迈出开发的第 ...

  8. 算法与数据结构入门一篇就搞定

    算法与数据结构开篇 你真的会数据结构吗? 公司开发一个客服电话系统,小菜需要完成客户排队模块的开发,经过三次修改: 第一次:小菜使用了数据库设计了一张客户排队表,并且设置了一个自动增长的整型id字段, ...

  9. hashset去重原理_9道Java集合面试题,搞定了再去投简历吧!

    今天这篇文章是单纯的从面试的角度出发,以回答面试题为线索,再把整个 Java 集合框架复习一遍,希望能帮助大家拿下面试. 先上图: 当面试官问问题时,我会先把问题归类,锁定这个知识点在我的知识体系中的 ...

  10. zabbix监控哪些东西_监控系统选型,一篇全搞定

    之前,写过几篇有关线上问题排查的文章,文中附带了一些监控图,有些读者对此很感兴趣,问我监控系统选型上有没有好的建议? 图片来自 Pexels 目前我所经历的几家公司,监控系统都是自研的.其实业界有很多 ...

最新文章

  1. platform 平台驱动——设备的写作流程
  2. SDNU 1178.能量项链(区间dp)
  3. thinkphp出现Call to undefined function Think\C() in ... online 313
  4. pr基本图形模板无法使用_PR模板21个时尚排版竖屏封面图形标题动画【资源分享1218】...
  5. 淘宝网手机客户端开发(一)目录篇
  6. Firebird数据库的Select语句
  7. MY CSDB BLOG 第一篇
  8. hodj 1008 Elevator (模拟题)
  9. NeurIPS2020 Generalized Focal Loss论文翻译
  10. 物联网碎片化的一些思考
  11. 7-17 小红帽与大灰狼的故事
  12. 一作发表6篇论文!他博三才出科研成果,厚积薄发终获成功
  13. python中常见的错误提示_python常见异常提示
  14. 1007 Maximum Subsequence Sum (25 分) java 题解
  15. linux下好玩的文本工具-figlet
  16. 机器学习:向量空间中的投影
  17. 易智联LM401模块学习(一)——初识Lora
  18. Spring Boot入门教程(二十五): Apache Shiro
  19. 推送系统从0到1(八):个性化精准推送的实现
  20. 物联网卡传感器赋能零售商品感应机制 开启智能零售新风尚

热门文章

  1. 计算机网络布线开题报告,网络综合布线开题报告.docx
  2. 起始之家网站的辅助教程值不值得买
  3. 计算机组成原理统一试卷,安阳工学院计算机组成原理试卷a
  4. 软件项目详细设计方案怎么写?
  5. 开源代码实现pppoe over l2tp方案
  6. [网络安全提高篇] 一一三.Powershell恶意代码检测 (1)论文总结及抽象语法树(AST)提取
  7. springboot+vue+Elementui宠物医院管理系统java项目
  8. GBase学习-安装GBase 8a MPP Cluster V95
  9. 谈一下MSDN和下载原版windows7
  10. graphx项目实战 — 航班飞行网图分析