Java学习 笔记

Java技术的架构包括三个方面: 
J2EE(Java 2 Platform Enterprise Edition )即企业版 ,是以企业为环境而开发应用程序的解决方案。 

J2SE(Java 2 Platform Stand Edition)即标准版,是桌面开发和低端商务应用的解决方案。 

J2ME(Java 2 Platform Micro Edition )即小型版,是致力于消费产品和嵌入式设备的最佳解决方案。 


J2EE目前已经成为开发商创建电子商务应用的事实标准。 
J2SE是Java 2平台的标准版, 它适用于桌面系统,提供CORBA标准的ORB技术,结合Java的RMI支持分布式互操作环境。 
J2ME提供了HTTP高级Internet协议,使移动电话能以Client/Server方式直接访问Internet
的全部信息,不同的Client访问不同的文件,此外还能访问本地存储区,提供最高效率的无线交

流。



同C语言编程一样,我们首先也要编写Java源程序,然后由Java编译程序将Java源程序编译为JVM可执行的代码,即Java字节码。Java源程序编译后生成的字节码文件就相当于C源程序编译后的Windows上的exe可执行文件,JVM虚拟机的作用类似Windows操作系统。

在Windows上运行的是exe文件,在JVM上运行的是Java字节码文件,也就是扩展名为.class的文件。 Windows执行exe可执行文件的过程,就是从exe文件中取出一条条的计算机指令,交给CPU去解释执行。

JVM执行Java字节码文件的过程,也是JVM虚拟机从Java字节码文件中取出一条条的字节码指令交给“CPU”去执行。硬件与软件是可以相互转化的,我们可以用视霸卡硬件解码VCD数据,也可以用超级解霸软件解码VCD数据。执行Java字节码的“CPU”可以是硬件,也可以是某个系统上运行的一个软件,这个软件称为Java字节码解释程序(也就是Java虚拟机)。 

可见,只要实现了特定平台下的解释器程序,Java字节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本。当前,并不是在所有的平台下都有相应的Java解释器程序,这也是Java并不是在所有的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行。 顺便来一句:Java兼顾解释性与编译性语言的特点,.java源文件转换成.class字节码文件的过程是编译型的,.class在操作系统上运行的过程则是解释型的,Java虚拟机充当了解释器的作用。


Sun公司提供了自己的一套Java开发环境,通常称之为JDK(Java Development Kit)。Sun 公司提供了多种操作系统下的JDK,随着时间的推移和技术的进步,JDK的版本也在不断地升级。

JRE:JVM(java虚拟机)+类库。

JDK:JRE+Java开发工具

JDK安装目录下:javac.exe是Java源文件的编译工具,Java源文件的扩展名为.java,如Test.java,Java源文件被编译后的Java字节码文件的扩展名为.class,如Test.class。 java.exe是Java字节码解释程序,负责解释执行Java字节码文件,就是一个JVM。


对象的比较:

有两种方式可用于对象间的比较,它们是“==”运算符与equals()方法,“==”操作符用于比较两个变量的值是否相等,equals()方法用于比较两个对象的内容是否一致。我们在前面讲过“==”操作符用于基本数据类型的变量比较的情况,非常简单和容易理解。如果一个变量是用作指向一个数组或一个对象的句柄,那么这个变量的类型就是引用数据类型,“==”操作符用于比较两个引用数据类型变量的情况,对初学者来说,很容易造成一些混淆,我们来看看下面的程序代码:

class Compare 
{ 
  public static void main(String[] args) 
  { 
        String str1 = new String("abc"); 
        String str2 = new String("abc"); 
        String str3 = str1; 
        if(str1==str2) 
         System.out.println("str1==str2"); 
        else 
         System.out.println("str1!=str2");  
        if(str1==str3) 
         System.out.println("str1==str3"); 
        else 
         System.out.println("str1!=str3");  
  } 
} 
程序运行结果是:
str1!=str2
str1==str3
str1和str2分别指向了两个新创建的String类对象,尽管创建的两个String实例对象看上去是一模一样,但他们是两个彼此独立的对象,是两个占据不同内存空间地址的不同对象。str1和str2分别是这两个对象的句柄,也就是str1和str2的值分别是这两个对象的内存地址,显然他们的值是不相等的。将str1中的值直接赋给了str3,str1和str3的值当然是相等的。str1和str2就好比是一对双胞胎兄弟的名称,尽管这对双胞胎兄弟长相完全一模一样,但他们不是同一个人,所以,是不能等同的,str3就好比是为str1取的一个别名,str3和str1代表的是同一个人,所以,它们是相等的。这个过程如图3.7所示。

只要在脑子里想的是各个变量所对应的内存状态,就非常容易理解上面的结果了。 我们下面再来看看使用equals()方法的情况。 

class Compare 
{ 
   public static void main(String[] args) 
   { 
          String str1 = new String("abc"); 
          String str2 = new String("abc"); 
          String str3 = str1; 
          if(str1.equals(str2)) 
         System.out.println("str1 equal str2"); 
        else 
         System.out.println("str1 not equal str2");  
        if(str1.equals(str3)) 
         System.out.println("str1 equal str3"); 
        else 
         System.out.println("str1 not equal str3");  
   } 
} 
程序运行结果是:
str1 equal str2
str1 equal str3

equals()方法是String类的一个成员方法,用于比较两个引用变量所指向的对象的内容是否相等,就像比较两个人的长相是否一样。


构造函数:

一旦编程者为该类定义了构造方法,系统就不再提供默认的构造方法了。

class Construct
{
int age;
public Construct(int x)
{
age = x;
}
}
上的 Construt 类中定义了一个对成员变量赋初值的构造方法, 该构造方法有一个形式参
数,这时系统就不再产生默认的构造方法,我们再编写一个调用 Construct 类的程序。
class TestConstruct
{
public static void main(String [] args)
{
Construct c = new Construct();
}
}
编译上面的程序,出现如下错误:
E: \TestConstruct.java:13: cannot resolve symbol
symbol    : constructor Construct    ()
location: class Construct
Construct c = new Construct();
^
1 error
错误的原因就是,调用 new Construct()创建 Construct 类的实例对象时,要调用的是没有参数的那个构造方法,而我们又没有定义无参数的构造方法,但我们定义了一个有参数的构造方法,系统不再为我们自动生成无参数的构造方法。针对这种情况,我们只要自己定义构造方法,都需要带上一个无参数的构造方法,否则,就会经常碰到上这样的错误。




在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值