Java学习(一)—基础知识

一、Java与C++区别

Java:

Public class A{
   
	Public static void main(String[] args){
   
		System.out.printIn(“hello world”)
	}
}

C++:

#include<iostream>
using namespace std;
int main()
{
   
	cout<<“Hello,world”<<endl;
	return 0;
}

1. 组织形式

  • Java:Java中,一切皆是类,所有数据或方法都要放在类中。
  • C++:有 struct 结构、enum 枚举、union 联合等各种组织形式。

2. 数据类型和类

  • Java:除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。
  • C++:允许将函数和变量定义为全局的。

3. 命名空间

  • Java:Java用包代替了C++的命名空间。通过包,Java可以针对类名进行类似于命名空间分解的操作。我们只需“import”导入包。
  • C++:

(1) namespace 名称{//声明}。在命名空间中定义的任何东西都局限于该命名空间内。

namespace namespace_name {
   
   // 代码声明
}

为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称:

name::code;  // code 可以是变量或函数

(2) 示例

#include <iostream>
using namespace std;
 
// 第一个命名空间
namespace first_space{
   
   void func(){
   
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   
   void func(){
   
      cout << "Inside second_space" << endl;
   }
}
int main ()
{
   
   // 调用第一个命名空间中的函数
   first_space::func();
   
   // 调用第二个命名空间中的函数
   second_space::func(); 
 
   return 0;
}

结果:

Inside first_space
Inside second_space

(3) using指令
使用 using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称。

#include <iostream>
using namespace std;
 
// 第一个命名空间
namespace first_space{
   
   void func(){
   
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   
   void func(){
   
      cout << "Inside second_space" << endl;
   }
}
using namespace first_space;
int main ()
{
   
   // 调用第一个命名空间中的函数
   // 使用 using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称。
   func();
   
   return 0;
}

结果

Inside first_space

using 指令也可以用来指定命名空间中的特定项目,例如:

#include <iostream>
using std::cout;
 
int main ()
{
   
 
   cout << "std::endl is used with std!" << std::endl;
   
   return 0;
}

4. 声明类和方法

  • Java:Java对于类和方法不必提前声明,直接使用即可。
  • C++:需要提前声明类和方法,否则会导致编译错误。

5. 指针

  • Java:没有指针。用new创建一个对象的时候,会获得一个引用(“句柄”),引用并不一定局限于创建时的位置。它们可根据情况任意定义:
String s = new String("Hello");
  • C++:有指针引用。在创建时必须进行初始化,且不可重定义到不同位置。

6. 内存分配

  • Java:Java中有垃圾自动回收机制,会自动清理引用数为0的对象。
  • C++:需要考虑如何避免内存泄漏。

7. 结构

  • Java:所有对象都是从根类 Object 统一继承。在Java中,无论如何都只有一个分级结构。
  • C++:可以在任何地方启动一个新的继承树,所以最后往往看到包含了大量树的“一片森林”。

8. 跳转

  • Java:采取“break”或“continue”跳出当前的多重嵌套循环。
  • C++:goto

9. 多线程

  • Java:Java内建了对多线程的支持。利用一个特殊的Thread类,我们可通过继承创建一个新线程(放弃了run()方法)。若将synchronized(同步)关键字作为方法的一个类型限制符使用,相互排斥现象会在对象这一级发生。在任何给定的时间,只有一个线程能使用一个对象的synchronized方法。在另一方面,一个synchronized方法进入以后,它首先会“锁定”对象,防止其他任何synchronized方法再使用那个对象。只有退出了这个方法,才会将对象“解锁”。在线程之间,我们仍然要负责实现更复杂的同步机制,方法是创建自己的“监视器”类。递归的synchronized方法可以正常运作。若线程的优先等级相同,则时间的“分片”不能得到保证。

二、Java基础语法

  • 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。

三、继承

1. 继承格式

通过extends关键字可以申明一个类是从另一个类继承而来的。

class Parent{
   

}
class children extends Parent {
   

}

2. 关键字

继承可以使用 extendsimplements 这两个关键字来实现继承,而且所有的类都是继承于java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。

(1) extends关键字
public class Animal {
   
	private String name;
	private int id;
	public Animal(String myName, String myId) {
   
		//初始化属性值
	}
	public void eat() {
   
		//吃东西方法的具体实现
	}
	public void sleep() {
   
		//睡觉方法的具体实现
	}
}

public class Penguin extends Animal
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值