DAY-1 :环境搭建

本文介绍了Java自学过程中的关键概念,包括如何使用package解决重名文件冲突和类文件管理,以及import语句的作用和导入规则,还提到了println,print和printf的区别及常见问题解决方法。
摘要由CSDN通过智能技术生成

前言

本人目前大二,数学专业,此前仅接触过一点的C++与Matlab

此博客采取自行学习+总结的方式,记录Java自学过程。

(因此可能会出现一些理解不恰当的问题,望交流告知)

 

  • package(包)

-一般针对解决如下问题:

(1)目录中重名文件处理问题;

例如:张三把一个命名为A.class的文件放入服务器,李四也放了一个命名为A.class的文件放入服务器,新文件往往会覆盖旧文件,因此可见重名文件可能会造成冲突。

(2)一个项目中class文件繁多,统一维护困难;

若干程序类属于同一核心功能,若需更新则可能要同时进行多个文件的替换,过于繁琐。

-针对上述问题,引入package,实现程序结构化的整体拆分(例如按功能分区分块等);并将每个包视为一个文件目录,不同文件目录下即可保存相同的程序文件名称。

-定义包的方法与注意事项:

package 包名;

当包中有包时,包名间使用"."连接:

package 包名1.包名2.....;

例如:定义一个叫HelloWorld的类,将其放入com.pancake包中:

package com.pancake;
public class HelloWorld{
...
}

其中,com是最外层的包,pancake是最内层的包,之间具有附属关系。

-Attention:

(1)包名必须全小写;

(2)package语句为Java源文件的第一条语句;

(3)类前无package语句,说明该类为缺省无包名;

 

  • import

考虑到包实现了程序结构化的整体拆分,其后在使用过程中必然存在程序类之间互相访问(调用)的情况(简单来说就是有时候需要引用外部的类),因此引入import语句实现导包的处理需求。

-基本语法格式为:

import语句位于package语句后,所有类的定义前,可有可无。

import 包名1[.包名2...].(类名|*);

-两种导入声明:

(1)单类型导入

例如:引入java.util包中的ArrayList类

import java.util.ArrayList;

(2)按需求类型导入

例如:按需求引入java.util包中的全部类

import java.util.*;

两者的区别在于,按需求类型导入通过通配符"*"定义其导入方式。例如上述import java.util.ArrayList指引用java.util中的ArrayList类,而import java.util.*指可以导入包java.util下的所有类(即需要时导入,不需要就不导入)。

-Attention:

(1)import语句导入前提:必须是类型属于public的类;

(2)当使用多个import语句按需求类型导入多个包时,如果多个包内存在重复命名的类,编译器则无法确定用哪一包里面的类,会出现异常命名冲突。因此此时只能使用单类型导入。

(3)导入的包与自己新建的类名若相同也会引起错误,新建类名时应该避免此种情况。

(4)import不会将导入声明的类写入class文件中,依旧独立使用class文件。

(5)导入了不需要的类最终会被编译器优化,不会出现在class文件中。

(7)对不同路径下的类进行导包就要引用关键字import,否则可直接用package+包路径。

 

  • println

println具有换行输出功能,而print没有换行输出功能为一般输出,printf一般用于格式转化。

-基本语法格式为:

println:

System.out.println(msg);

其中,参数可以为空,起换行作用。

print:

System.out.print(msg);

其中,参数不可以为空,否则报错。需要实现换行时:+"\n"

printf:

System.out.printf(format,msg);

-问题:

println,print的运算规则?

  • HelloWorld初尝试

代码:

package com.pancake;

public class HelloWorld {

    public static void main(String args[]){
        System.out.println("Hello,world!");
    }//of main
}//of class HelloWorld

结果:

e49aca38ddfd4bb08bc85751b0ad540e.png

问题:

虽然运行成功,但是IDEA提示Package name 'com.pancake' does not correspond to the file path '',在网上查阅资料发现应该是因为IDEA在类文件中直接修改过包名(未定义)导致/先创建了class文件后加入package语句导致,因此此时光标移到定位的包语句,根据IDEA提示(Move to package com.pancake)按下Alt+Shift+Enter,即解决。即要保持package与所建包名一致。

c0d1b4ede48b49f19fa15881b48f246b.png

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值