如果你不懂Java数据结构 并且想认真学习接触了解一下Java的语法,建议把这篇文章收藏了,多看几遍,应该可以初步掌握Java 大部分基础的语法 。
编程环境:
工程项目推荐使用IDEA.
入门学习推荐使用jupyter notebook.
安装jupyter notebook的java插件 IJava 的方法如下:
1,下载Java JDK >= 9.建议12
2,下载ijava-1.3.0.zip,并解压。
3,进入解压后目录,运行 python3 install.py --sys-prefix。
一,算数运算
二,输入输出
输入:System.in, java.io.InputStreamReader, java.util.Scanner
输出:System.out.println, System.out.printf, System.out.print
读文件:java.io.FileInputStream
写文件:java.io.FileOutputStream
1,输入
Scanner扫描输入,遇到\n结束。
BufferedReader.read() 逐字符读取。
BufferedReader.readLine() 逐行读取。
2,输出
print不换行,println换行,printf格式化输出。
3,读文件
4,写文件
三,导入Package
java有以下一些导入包的方式:
1,导入包中某个对象:import java.text.SimpleDateFormat
2,导入包中全部对象: import java.util.*
3,导入包中的静态字段和方法(较少使用): import static java.lang.System.*
4,默认导入: java默认导入了java.lang.*
四,语法规则
1,标识符
标识符由字母和数字组成,遵循驼峰命名规则。
类的名称以大写字母开头。
方法的名称以小写字母开头。
变量的名称以小写字母开头。
2,注释
单行注释用//开头。
多行注释用/*开头,以*/结尾。
特殊多行注释,以/**开头,以*/结束,如果有多行,每行通常以星号开头。
这种特殊的多行注释需要写在类和方法的定义处,可以用于自动创建文档。
3,数据类型
Java 的数据类型有两大类,基本数据类型和引用数据类型。
基本数据类型相对非常底层,基本类型相同值的对象占有同样的存储单元,判断是否相等可以用 ==。
引用数据类型本质上都是Class,相对抽象,引用类型相同值的对象占用不同的存储单元,判断是否相等应该用 equals方法。
基本数据类型包括:整型(byte,short,int,long),浮点型(float,double),布尔类型(boolean),字符类型(char)
引用数据类型包括:包装类型(Integer,Double,Char,Boolean,……),字符串(String),数组(Array),以及各种容器类(List,Map,Set,Queue)。
用户自定义的任何Class都可以看成是一种引用数据类型。
4,变量声明
5,标点符号
Java 中常用的标点符号用法总结如下
()表示优先级或者函数参数列表
[]用于索引或数组声明
{}用于作用域
<>用于泛型
* 用于import包时的通配符
@用于注解
五,编译执行
1,程序结构
一个.java程序文件中必须有且只有一个public类,该类必须有一个声明为main函数作为程序入口。
并且这个main函数需要声明为 public static void 类型,即静态的,公开的,返回值为空的函数类型。
并且这个java程序的文件名必须和这个public类名保持一致。
将以上代码拷贝到文本文件中,命名为 Main.java。
2,编译执行
Java是一种解释型语言,其java源码需要被编译成class字节码运行在Java虚拟机上。
因此,执行Java程序分两步:
(1),使用javac编译命令将以.java结束的程序文件编译成以class结尾的字节码程序文件。
javac Main.java 编译后得到 Main.class文件
(2),使用java 命令运行字节码程序。
java -classpath ./ Main 在JVM上执行Main.class文件
编译时,按下面的顺序依次查找类:
(1)查找当前package是否存在这个class;
(2)查找import的包是否包含这个class;
(3)查找java.lang包是否包含这个class。
如果按照上面的规则还无法确定类名,则编译报错。
3,classpath和jar包
(1) classpath
classpath是JVM用到的一个环境变量,它用来指示JVM如何搜索class。
它其实就是一组目录的集合,它设置的搜索路径与操作系统相关。
例如,在Windows系统上,用;分隔,可能长这样。
C:\work\project1\bin;C:\shared;"D:\My Documents\project1\bin"
在Linux系统上,用:分隔,可能长这样。
/usr/shared:/usr/local/bin:/home/liaoxuefeng/bin
如果JVM在某个路径下找到了对应的class文件,就不再往后继续搜索。如果所有路径下都没有找到,就报错。
classpath的设定方法有两种:
在系统环境变量中设置classpath环境变量,不推荐;
在启动JVM时设置classpath变量,推荐。
我们强烈不推荐在系统环境变量中设置classpath,那样会污染整个系统环境。在启动JVM时设置classpath才是推荐的做法。实际上就是给java命令传入-classpath或-cp参数:
java -classpath .;C:\work\project1\bin;C:\shared abc.xyz.Hello
但通常classpath这个参数不需要配置,其默认值为当前目录 ./一般就够用了。
(2) jar包
设想一下,如果有很多.class文件,散落在各层目录中,肯定不便于管理。
如果能把目录打一个包,变成一个文件,就方便多了。
jar包就是用来干这个事的,它可以把package组织的目录层级,以及各个目录下的所有文件(包括.class文件和其他文件)都打成一个jar文件,这样一来,无论是备份,还是发给客户,就简单多了。
jar包实际上就是一个zip格式的压缩文件,而jar包相当于目录。如果我们要执行一个jar包的class,就可以把jar包放到classpath中:
java -cp ./hello.jar abc.xyz.Hello
jar包还可以包含一个特殊的/META-INF/MANIFEST.MF文件,MANIFEST.MF是纯文本,可以指定Main-Class和其它信息。JVM会自动读取这个MANIFEST.MF文件。如果存在Main-Class,我们就不必在命令行指定启动的类名,而是用更方便的命令:
java -jar hello.jar
jar包还可以包含其它jar包,这个时候,就需要在MANIFEST.MF文件里配置classpath了
4,maven项目管理工具
实际项目开发中,通常使用maven管理项目,并打成jar包。
maven使用POM文件POM.xml指定项目的依赖和打包方式。
maven安装后,将会在本地创建~/.m2/repository目录,集中存放jar包作为本地仓库。
maven搜索并载入依赖的顺序如下:本地仓库->私人远程仓库->中央仓库
常见的maven 命令如下:
mvn clean 清理编译打包输出
mvn compile 项目编译
mvn package 项目打包
mvn install 安装到本地仓库
六,Java数据结构概述
Java中常用的数据结构主要包括字符串(String),数组(Array),枚举(enum), 以及java.util中的各种容器类(通常被称做集合)。
java.util中的这些容器类分成两大类,一类是实现了Collection接口,另外一类实现了Map接口。
容器类中常用的数据结构包括:列表(List),映射(Map),集合(Set),队列(Quene),堆栈(Stack)。
当然这些数据结构也都是接口,通过API封装了特定的功能,下面还会有多种不同的实现。
可以用统一的Iterator方式对大多数容器类进行遍历,这种更加抽象的方式优于使用下标的方式进行遍历。
七,字符串String
Java 中的字符串和Scala中的字符串来源于同一个包,java.lang.String,两者具有完全相同的方法。
八,数组Array
Java 中的数组和 C++中的数组很像,其长度是不可变的,但是数组中的元素内容是可以改变的。
数组是引用类型,一般是用花括号{}作为数组范围标识。
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
1,创建Array
2,Array的常用操作
九,列表List
Java中的列表List是一种有序数据结构的接口。
它有两种实现,一种是ArrayList,另外一种是LinkedList。前者是顺序存储,方便查询和修改特定元素。后者是链表存储,方便插入和删除元素。通常情况下我们使用ArrayList更多一些。
和数组Array不同,List的大小是可以改变的。
List的主要方法如下:(E是元素 e的类型)
在末尾添加一个元素:void add(E e)
在指定索引添加一个元素:void add(int index, E e)
删除指定索引的元素:int remove(int index)
删除某个元素:int remove(Object e)
获取指定索引的元素:E get(int index)
获取列表大小(包含元素的个数):int size()
1,创建List
2,List常用操作
部分内容来自微信公众号程序IT圈