c语言/c++转Java学习笔记---基础问题

  • 1.java注释
  • 2.数组的定义和使用
    • 定义
    • 使用
  • 3.类
  • 4.this 的使用
  • 5.继承
  • 6.super的使用
  • 7.包
  • 8.修饰符
    • 成员的访问控制符(权限修饰符)
    • 非访问控制符
      • static
      • final
      • abstract
  • 9.接口(interface)
    • 1.定义接口interface
    • 2.实现接口implements
    • 3.接口的作用
    • 4.接口类型
    • 5.接口中的常量

1.java注释

java中可以采用三种注释方法:

//用于单行注释。注释从//开始,终止于行尾
/*...*/注释,从/*开始,到*/结束,且这种注释不能互相嵌套;
/**...*/ 是java所特有的doc注释。它以/**开始到*/结束

其中第三种注释主要是为支持JDK工具而采用的。javadoc能识别注释中用标记@标识的一些特殊变量,并把doc注释加入它所生成的HTML文件。常用标记如下。
@see:引用其他类
@version:版本信息
@author:作者信息
@param:参数名说明
@return:说明
@exceptio:异常说明
对于有@标记的注释,javadoc在生成有关程序文档的时候,会自动识别他们,并生成文档
可以参考:使用javadoc生成api文档(一):注释及标记

2.数组的定义和使用

定义

  • Java语言中声明数组时不能指定其长度,如
    int a[5]; 是非法的
    因为数组是引用类型
    int [] a = new int [5]; 这里a只是一个引用
  • 数组定义 与 为数组分配空间 是分开进行的
  • 静态初始化:在定义数组的同时就为数组元素分配空间并赋值
  • 隐式初始化:数组是引用类型,数组一经分配,其中每一个元素也按照成员变量同样的方式被隐式初始化(数值类型是0,引用类型是null) 例如int []a= new int[5];则此时a[3]=0;
  • 二维数组是数组的数值,多维数组的声明和初始化应该从高维到低维的顺序进行
    如:int t1[][]=new int [][4];是非法的
    要写int t1[][]=new int [4][];

使用

  • 每个数组都有一个属性length指明它的长度,例如:a.length指明数组a的长度元素(元素个数);
  • 增强的for语句:Enhanced for语句可以方地处理数组集合中各元素
    如:
int[] ages=new int[10];
for(int age:ages)
{System.out.println(age);
}

这种语句是只读式的遍历

  • 数组的复制 System.arraycopy(source,0,dest,0,source.Length);
    参数分别为:源数组,开始下标,目的数组,开始下标,复制长度

3.类

  • 类是组成java程序的基本要素,是一类对象的原型,它封装了一类对象的状态和方法(将一堆变量和函数封装在一起)
  • 字段是类的属性(有时叫域),用变量表示
  • 方法是类的功能和操作,是用函数表示的
  • 构造方法:这是一种特殊的方法,用来初始化(new)该类的一个新的对象,构造方法和类同名,而且不返回数据类型。
  • 一般情况下,类都有一个至多个构造方法,如果没有定义构造方法,系统会产生一个构造方法称为默认构造方法,默认构造方法不带参数且方法体为空
  • 访问对象的字段或方法要用算符“.”,例如student.age;
  • 方法重载,多个方法有相同的名字,这些方法的签名不同,或者是参数个数不同,或者是参数类型不同。
  • 通过方法重载可以实现多态

4.this 的使用

1.在方法及构造方法中,使用this.name来访问字段及方法
2.使用this解决局部变量与域同名的问题
如在构造方法中,经常这么用:

Person(int age,String name)
{this.age=age;this.name=name;
}

这里this.age表示域变量,而age表示的是参数变量
3.构造方法中,用this调用另一种构造方法
如:

Person()
{this(0,"");....
}
在构造方法中调用另一种构造方法,则这条调用语句必需放在第一句

5.继承

  • 继承是面向对象的程序设计中最为重要的特征之一

1.一个类只能有一个直接父类
2.子类继承父类的状态和行为

  • 可以修改父类的状态或重载父类的行为
  • 可以添加新的状态和行为
  • 好处:可以实现代码的重复利用,提高开发效率和可维护性

3.java中的继承是通过extends关键字来实现的
例如

class Student extends Person{...}

如果没有extends子句,则该类默认为java.lang.Object的子类
所有的类都是通过直接或者间接地继承java.lang.Object得到的

6.super的使用

1.使用super访问父类的域和方法
正是由于继承,使用this可以访问父类的域和方法,但有时为了明确地指出父类的域和方法,就要用关键字super,当然使用super不能访问在子类中添加的域和方法。
2.使用父类的构造方法
子类在构造方法中可以调用父类的构造方法
假设Student的父类Person中有Person(int age,String name){…}

Student(int age,String name,int score)
{super(age,name);this.score=score;
}

注意使用时super()必须放在第一句

7.包

  • package pk1[.pk2[.pk3…]];

1.包及子包的定义实际上是为了解决名字空间、名字冲突
2.包有两方面的含义

  • 一是名字空间、存储路径(文件夹)
  • 一是可访问性(同一包中的各个类,默认情况下可相互访问)

3.一个java文件只能写一个package语句
4.为了能使用java中已提供的类,需要import语句来导入所需要的类

  • import语句的格式为 import package1[.package2…].(classname|*);
    例如
import java.util.Date;
import java.awt.*;
import java.awt.event.*;

注意使用(*)表示只能使用本层次的所有类,不包括子层次下的类

  • java编译器自动导入包java.lang.*

8.修饰符

修饰符分为两类

  • 访问修饰符 如public/private等
  • 其他修饰符 如abstract等
    修饰符可以修饰类也可以修饰类的成员(字段、方法)

成员的访问控制符(权限修饰符)

访问控制符 同一个类中 同一个包中 不同包中的子类 不同包中的非子类
private Yes
默认(包可访问) Yes Yes
protected Yes Yes Yes
public Yes Yes Yes Yes

用途举例:

  • 将字段用private修饰,从而更好的将信息隐藏,用setXXX和getXXX方法对类的属性进行存取
  • 比如只提供getXXX不提供setXXX可以保证属性是只读的

非访问控制符

非访问控制符 基本含义 修饰类 修饰成员 修饰局部变量
static 静态的、非实例的、类的 可以修饰内部类的 Yes
final 最终的、不可改变的 Yes Yes Yes
abstract 抽象的、不可实例化的 Yes Yes

static

  • 它们是类的字段,不属于任何一个实例
  • 它不保存在某个对象实例的区域内,而是保存在类的内存区域的公共存储单元
  • 类变量可以通过类名直接访问,也可以通过实例对象来访问,两种方法的结果是相同的
  • 在一定意义上可以用来表示全局变量
  • 用static修饰符修饰的方法仅舒徐类的静态方法,又称为类方法,类方法的本质是该方法是属于整个类的,不是属于某个实例的
  • static中不能访问实例变量,不能使用this或super
  • 调用这个方法的时候,可以使用类名直接调用,也可以使用某一个具体的对象调用

final

1.final 类
如果一个类被final修饰,则这个类不能被继承,方便于优化
2.final方法
final修饰符所修饰的方法,是不能被子类所覆盖的方法
3.final字段及final局部变量
在定义final的局部变量的时候,也必须只能赋值一次。它的值可能不是常量,但它的取值在变量存在期间不会改变。

abstract

1.abstract类
抽象类不能被实例化
2.abstract方法

  • 对抽象方法只许声明,而不需实现,即用(;)而不是{}
  • 抽象类中可以包含抽象的方法,也可以不包含抽象的方法。但是一旦某个类中包含了abstract方法,则这个类必须声明为abstract类
  • 抽象类在子类中必须被实现,否则子类仍然是abstract

9.接口(interface)

1.定义接口interface

所有方法都自动是public abstract
接口定义包括接口声明和接口体两部分,例如

interface Collection{void add(Object obj);void delete(Object obj);Object find(Object obj);int size();
}

接口声明中还可以包括对接口的访问权限以及它的父接口列表。完整的接口申明如下:
[public]interface interfaceName [extends listOfSuperInterface]{…}
一个接口可以有多个父接口,用逗号隔开

2.实现接口implements

可以实现多继承
与类的继承关系无关
在类体中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法。一个类可以实现多个接口
例如:

class queue extends Collection{public void add(Object obj){...}public void delete(Object obj){...}public Object find(Object obj){...}public int size(){...}
}

3.接口的作用

  • 通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。从而一定意义上实现了多重继承
  • 通过接口可以指明多个类需要实现的方法
  • 通过接口可以了解对象的交互界面,而不需要了解对象所对应的类

4.接口类型

  • 接口可以作为一种引用类型来使用。任何实现该接口的类的实例都可以存储在该接口类型的变量中,通过这些变量可以访问类所实现的接口中的方法。Java运行系统时动态地确定该使用哪个类中的方法
  • 接口作为一种数据类型可以不需要了解对象所对应的具体的类

5.接口中的常量

在接口中定义的常量可以被该接口的多个类共享
在接口中定义的常量具有public,static,final的属性

c语言/c++转Java学习笔记---基础问题相关推荐

  1. Java学习笔记基础(上)

    写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java语言代码把思路体现出来. 学习新技 ...

  2. java学习笔记-基础知识-2023.3.29

    学习网站:https://www.sxt.cn/Java_jQuery_in_action/History_Direction.html 刷题网站 牛客网专题-spring java sql 第一章 ...

  3. Java学习笔记基础(下)

    基本数据类型对象包装类:是按照面向对象思想将基本数据类型封装成了对象. 好处: 1:可以通过对象中的属性和行为操作基本数据. 2:可以实现基本数据类型和字符串之间的转换. 关键字   对应的类名 by ...

  4. Java 学习笔记 —— 基础部分

    文章目录 1. 第一个 Java 程序 基础语法 2. Java 对象和类 2.1 构造器 2.2 创建对象和访问实例 2.3 Java 包 3. 数据与变量 3.1 基本数据类型 3.2 基本变量类 ...

  5. java学习笔记-基础篇

    Java基础篇 1-12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28-31异常 1-12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...

  6. Java学习笔记基础(中)

    继 承(面向对象特征之一) 好处: 1:提高了代码的复用性. 2:让类与类之间产生了关系,提供了另一个特征多态的前提. 父类的由来:其实是由多个类不断向上抽取共性内容而来的. java中对于继承,ja ...

  7. java学习笔记14--多线程编程基础1

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...

  8. JAVA学习笔记(1)【基础知识】

    JAVA学习笔记DAY_1 提示:关于java系列的内容只是本人在老师的指导下和自学过程中的一些学习笔记,如果存在错误敬请批评指正! 文章目录 JAVA学习笔记DAY_1 前言 一.Java语言未来的 ...

  9. Java学习笔记(java基础)

    Java学习笔记(第一周) Java 介绍 Java 发展方向 JVM , JDK , JRE 名词解释 Java语言的特点 Java安装 安装包的下载 配置环境变量 验证是否安装成功 Java的第一 ...

最新文章

  1. Charles的断点调试(APP)
  2. python 中有趣的库tqdm
  3. here with you
  4. java web 三层架构
  5. mysql 设置男女约束
  6. Visual Studio 与 Eclipse,谁是最强 IDE?
  7. Maven Oracle JDBC
  8. windows启动winload.exe的数字签名错误问题
  9. viper12a电源电路图_采用VIPer12A的开关电源电路分析(图)
  10. 凸优化理论基础3——凸集和凸锥重要例子
  11. react native 动画组件(Animated)浅析
  12. 如何写出好文案,不妨看看这篇(上)
  13. python中怎么画一个机器猫_如何用Python画一只机器猫?
  14. Couldn‘t find meta-data for provider with authority xxx.fileProvider
  15. .browser的解释
  16. office2016—word不能使用输入法,只能输入英文问题
  17. C语言字符串类型定义(二维字符数组模拟连续存储多个字符串)(以小凡点名为例)
  18. mysql meb物理备份
  19. 工程仪器振弦传感器无线采集仪的采集数据发送方式及在线监测系统
  20. 批量删除所有文件名称中的英文字母

热门文章

  1. 网络层概述(计算机网络)
  2. 感谢C语言吧吧友奉上的C语言小程序练习---初学者练手
  3. rtems网络移植-实现网卡驱动
  4. NLP成功十四项心理定律
  5. 互联网产品 从设计到运营 这中间提高需要关注的网站
  6. 统计英文字母、数字个数
  7. 开始学java 04
  8. ios之Xcode 快捷键大全/使开发更高效
  9. 类似损失函数符号L的字母怎么在mathtype打出来?
  10. 合肥市noi计算机竞赛,合肥第一,获“强基计划”资格!孙乐然斩获第37届全国信息学奥林匹克竞赛银牌...