java基本语法

什么是Java?

  • 程序设计语言;开发环境;应用环境;部署环境

java语言的特性

  • 提供庞大的类库,纯粹面向对象
  • 支持动态的和静态的代码继承和重用
  • 提供可解释执行的环境
  • 一次编写,到处运行 先编译后解释执行, java源文件先通过编译生成一个字节码文件bytecode(在任何平台都一样的二进制文件),字节码文件不能直接运行,需要JVM的支撑才能运行
  • java虚拟机:JVM
    java解释器功能由JVM实现 Bytecode ---> JVM --->CPU
  • 垃圾收集:Garbage Collection
  • 代码安全:Code Security
  • 字节码文件:Verifying
    • 字节码的结构是由JVM特定指定的
    • 字节码不会破坏,篡改系统,禁止运行时 堆栈溢出,防止蠕虫病毒袭击

安装,搭建JAVA开发运行环境

JDK,JRE,JVM

  • jre是jdk的子集,在一套完整的jdk中就包含jre
  • jre只负责运行一个编译好的java程序(字节码文件bytecode)
  • jdk负责去编译,调试,运行整个操作过程都支持
  • 在jre内部有一个软件组件JVM就是java虚拟机

JDK的结构目录

  • bin目录:java开发调试的命令,exe文件,连接库文件,编译器等等
  • javac:编译一个Java文件;
  • java:运行一个java文件 ;编译程序java -d myfirstjava.java
  • jre目录:jdk自带的jre
  • src压缩文件:放置的是jdk类库的源码文件,按包结构组织
  • demo:java代码的演示实例文件
  • include:用于编译本地方法的文件
  • docs:html格式的类库文档
  • lib:类库文件

java程序开发环境配置 (windows平台)

  • 环境变量:
    • JAVA_HOME:保存jdk的安装目录 JAVA_HOME ="jdk安装目录"
    • CLASSPATH:系统搜索字节码(类文件.class)文件的搜索路径。设置系统在查找字节码文件时,它的搜索路径 CLASSPATH =.; %JAVA_HOME%\jre\lib\rt.jar;
    • PATH:设置命令的搜索路径,在执行命令时,操作系统就会在PATH设置的路径去查找命令的可执行文件。PATH =%JAVA_HOME%\bin;

包的概念,含义和使用

  • 包的声明:package xxx package是关键字 xxx是包名
  • 包是比类更大的概念,运用包可以更方便的管理类
  • 一个包可以组织不同模块功能的类

java常用命令

  • javac [选项] 源文件名 --编译java源文件
    • -d 指定放置生成的类文件的位置
    • 查看javac命令到底有哪些选项 ,直接javac -help命令回车
  • java [选项] 类名[参数] 运行java程序
  • jdb [选项] 类名[参数] 进行debug调试的命令
  • -javadoc [选项] 包名 源文件名 生产jdk的api形式的程序文档

JDK的常用包

  • java.lang :JAVA语言包,核心的类和接口,无需导入可直接使用。如String、Math、Integer等
  • java.awt/javax.swing/java.awt.event:做java的图像开发使用的包,包含有图形组件,用来构建和管理应用程序的图形用户界面
  • java.applet :用来开发java小程序的类和接口,包含了可执行applet特殊行为的类
  • java.io:包含了java所有做输入输出的类和接口,包含处理I/O文件的类
  • java.net:用来做网络开发的类和接口
  • java.util:java工具包,包含java开发常用的工具类,java的时间日期,java的数据结构,随机数发生等

java中的特殊符号

  • 单行注释: //
  • 多行注释: /* * /
  • 多行注释:/**…*/
    • 多行注释可以不打开源文件来查看,java中有一个javadoc工具,它的作用是将源文件中的多行注释单独抽取出来放在另一个文件中

java命名规范

  • 包名, 类名,接口名:每个单词的首字母大写,其他字母小写
  • 属性,方法,局部变量名:第一个单词全小写,从第二个单词开始以后每个单词的首字母大写,其他字母小写
  • 常量:每个单词所有字母全部大写,单词之间用_来连接,java中使用final 修饰,表示常量

java 关键字

  • abstract do implements private throw boolean double import portected throws
  • break else instanceof public transient byte extends int return true
  • char finally native super volatile class float new switch while
  • continue for null synchronized default if package this
  • enum ,assert

java的原始数据类型

  • boolean true/false
  • byte
  • short
  • int
  • long
  • char
  • double
  • float

浮点数据类型

  • Math类
    • lang包下的类,它里面定义了很多方法来实现常用的数学运算
    • Math类中的方法都是静态的
    • Math类中的方法:
   - abs():求绝对值
   - sqrt():求平方根
   - pow():求乘方
   - cos(),sin(),tan(),ctan():数学的三角函数运算
   - random() :获得0-1之间的随机数

数据类型的转换

java中的特殊类型-对象

java的运算符

  • 赋值运算符
  • 比较运算符
  • 算术运算符
  • 移位运算符
  • 位运算符
  • 逻辑运算符
  • 条件运算符

java的常量

  • 常量是程序里持续不变的值,也成为字面值用关键词final声明
  • 字符串常量:由双引号“ ”括起来表示。
  • 空值常量;null表示空值

java中的变量

  • 局部变量必须先赋值再使用
  • 实例变量、类变量支持不初始化就可以使用
  • 实例变量、类变量支持不初始化则系统会自动初始化
  • 在主方法中使用实例变量/类变量则必须将其声明为static

java中的函数

  • 在static方法中只能访问static类变量,只能调用static的函数
  • 在类的多个方法使用同一变量,那么这个变量要定义在类中且在任何方法之外,这样的变量叫做类变量或实例变量

java中的命令行参数的使用

  • java中主方法main()是程序的入口,程序从主方法开始执行
  • 在非static方法中可以使用static变量与非static变量
  • 位于java命令行最后的信息就是命令行参数
  • 如运行 java 包名.类名 a b 回车 ,其中a,b 就是命令行参数
    • 主方法的参数String[] args 就是用来接受命令行参数的
    • Java中的命令行参数是不包括命令名,args[0]就是指的第一个参数
    • 命令行参数接收后都是字符串,若想要得到相应类型的数字则需要使用包装类的方法来转化。如
      整型数据int则使用Integer.parselnt(String)方法来转化。

函数的参数传递

函数的重载

  • 在同一个类中允许同时存在多个名字相同的方法或函数,只要它们的参数类型和参数个数等不同,这样的情况就叫做函数的重载(overload
  • 函数重载的条件:一定要参数列表不同,函数名相同,但返回值没有条件要求
    • 参数类型不同
    • 参数个数不同
    • 参数的顺序不同

java的流程控制

  • 顺序结构
  • 选择结构
  • 循环结构

java的数组

  • 数组也是一个对象,可以有属性,但没有方法的

  • 如:一维数组:int [ ] a;声明一个数组变量,可以不给数组长度,此时还不会给数组分配空间。当 a =new int[10];才会分配空间

  • 数组名a是一个地址,是数组的引用,但绝不能执行a++a–操作

  • a.length的值是数组的长度,length是数组的属性

  • 数组的初始化,整型数组没有初始化时系统默认会给它赋值为0

  • 其他基本类型的数组没有初始化则系统会赋值为相应类型的默认值

  • long :0L ,float:0.0f ,double: 0.0

  • char :'\u000' ,boolean :false

  • 对象类型的数组没有初始化则系统默认会赋值为null

  • 数组静态初始化

//在定义数组a时就分配空间并初始化
  int [] a ={1,2,3,4,5,6,7,8,9 } ;
  • 数组动态初始化
  //第二个[]中间必须为空,后面才能用{ }来初始化;
  //这里产生了2个对象(数组对象,数组名引用)
 int [] b =new int [] {1,2,3,4,5,6,7};
  String[] str =new String[10];
//定义一个数组
int [] a ;
//为数组分配空间
a =new int [10];

int [] a =new int [10]
int [] a ={1,2,3,4,5,6,7,8};//显式初始化
  • 二维数组仿照一位数组同理,同样的初始化过程
  • 数值复制:arraycopy()
arraycopy(Object src,int src_pos,Object dst,int dst_pos,int legth)

String类型简介

  • string类型:字符串类型,它不是java的8种基本类型,是类的类型
  • string是Java的一个类,这个类的实例叫做String对象
  • java中字符串用双引号“ ” 来引用
  • java中的字符串类不是以‘\0’结尾
  • 获取String类的对象变量
 - String str1 ="hello" ;//声明字符串对象  
 - String str2 = new String("World!");//定义字符串对象

string常用操作类型

获取字符串长度方法
  • public int length():返回字符串长度
  • char charAt(int):返回参数int指示位置上的字符
- System.out.println(str3.length());
- System.out.println(str1.charAt(0));
  • public String substring(int beginIndex,int endIndex)
  • public String substring(int beginIndex)
查找字符串方法
  • int indexOf(String/char):获得参数字符或字符串在该字符串中的第一次出现的位置索引,找不到返回-1
- public int indexOf(char ch)//返回ch第一次出现的位置
- public int indexOf(String str)//返回子串第一次出现的位置
- public int lastIndexOf(char ch)//最后出现的字符ch的位置
- public int lastIndexOf(String str)//最后的子串str出现的位置
- System.out.println(str3.indexOf("Wor"));
- System.out.println(str3.indexOf("or));
比较字符串的方法
- boolean equals(String)//比较2个字符串内容是否相等,不忽略大小写
- boolean equalslgnoreCase(String)//比较2个字符串内容是否相等,忽略大小写
- int compareTo(String str)
- int compareToIgnoreCase(String str)
修改字符串的常用方法
- String replace(char oldchar,char newchar)
- String replaceAll(String regex ,String newstr)
- String trim()
- String Concat(String)//将当前String与参数String连接起来返回新串
- boolean contains(charSequence s)//判断一个字符串是否包含参数的子串
- String toLowerCase()
- String toUpperCase()
分割字符串的方法
//根据指定的字符串或者正则表达式分割该字符串到字符数组
public String[] split(String regex)
//limit为限制分割字符串个数
public String[] split(String regex ,int limit)
字符串转其他的方法
//将其他数据类型转换为String类型
public static valueOf(Object obj)
//支持若干重载方式
public static valueOf(boolean b)
public static valueOf(char ch)
public static valueOf(double d)
public static valueOf(int i)
//返回一个字符数组,每个元素为该字符串的字符
public char[] toCharArray()
//判断字符串是否以str开头
public boolean startWith(String str)
//判断字符串是否以str开头,搜索位置从startIndex开始
public boolean startWith(String str,int startIndex)
//判断是否以str结尾
public boolean endsWith(String str)
//判断字符串是否为空
public boolean isEmpty()

StringBuffer类

StringBuffer类的构造方法
//创建初始容量为16,不含任何字符的字符缓冲区
public StringBuffer()
//创建初始容量为length,不含任何字符的字符缓冲区
public StringBuffer(int length)
//又str对象的内容创建一个字符缓冲区,初始容量为字符串str长度+16
public StringBuffer(String str)

StringBuffer strb1 =new StringBuffer();
StringBuffer strb2 =new StringBuffer(20);
StringBuffer strb3 =new StringBuffer("java is good");
容量和长度方法
public void setLength(int newLength)
public void ensureCapcity(int newCapacity)
public int length()
public int capacity()
数据提取方法
//访问某个元素
public char charAt(int index)
//访问开始位置到最后面的子串
public String substring(int start)
//访问开始位置和结束位置的子串
public String subatring(int start ,int end)
//转换为String字符串
public String toString()

查找元素方法
- public int indexOf(String str)
- public int indexOf(String str,int fromIndex)
- public int lastIndexOf(String str)
- public int lastIndexOf(String str,int fromIndex)
字符串的修改方法
//往字符串里添加对象
public StringBuffer append(Object obj)
//往字符串里插入对象,offset为偏移量
public StringBuffer insert(int offset,Object obj)
//删除字符串里的一段
public StringBuffer delete(int start ,int end)
//替代字符串里的一段
public StringBuffer replace(int start ,int end ,String str)
//字符串翻转
public StringBuffer resverse()
/*用于该字符序列的方法尝试减少存储.如果缓冲区大于必要保持
其当前的字符序列,那么它可能会调整大小,以成为更有效的空间
*/
public void trimToSize()
StringTokenizor类
//返回还没分隔的片段的个数
public int countTokens()
//返回是否还有分隔片段
public boolean hasMoreTokens()
public boolean hasMoreElements()
//返回从当前位置到下一个分隔符的片段
public String nextToken()
public Object nextElement()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值