java 基础知识
来源:互联网 发布:电脑版解压软件 编辑:程序博客网 时间:2024/05/29 03:35
一、简介
- JVM(Java Virtual machine)
- JRE(Java Runtime Environment)包含java虚拟机和java程序所需要的核心类库
- JDK(Java Development Kit Java开发工具包),用于开发Java程序。包括JRE和java的开发工具。所以安装了JDK,就不用单独安装JRE了。
其中: 编译工具(javac.exe) 打包工具(jar.exe)
- 安装:
安装的JDK是一个绿色版的,可以拷贝到任何地方。安装之后还会提示安装一个独立的JRE,这个可以不用,应为JDK下面已经有一个JRE了。JavaFX是一个和ajax差不多的SDK,用于前端开发。
设置PATH :将bin文件夹的绝对路径添加到Path可以解决命令行中调用java工具就不用指定绝对路径了。JAVA_HOME 指定JDK的根目录,就是bin的父目录。
也可以在CMD里使用 set path= bin;%path% 添加bin的路径。 临时配置(只在当前窗口显示)
set 查看本机所有环境变量;set 变量名 查看具体环境变量的值 set 变量名= 清空一个环境变量的值;set 变量名=变量值 给指定变量指定具体值。%变量名% 可以引用他的实际值。
- .java文件--->javac.exe编译生成 .class文件 --->java.exe运行
- class文件的寻找顺序
在没有classpath的时候,只在当前目录下面查找要运行的类文件
在存在classpath的时候,会在设置的目录下查找类文件。如果最后目录以分号结尾,jvm没有找到时会在当前目录继续查找。不建议加分号,可以用.表示当前目录。
二、基础
- 关键字:定义:被java语言赋予了特殊含义
特点:关键字中所有字母都为小写用于定义数据类型的关键字classinterfacebyteshortintlongfloatdoublecharbooleanvoid 用于定义数据类型值的关键字truefalsenull 用于定义流程控制的关键字ifelseswitchcasedefaultwhiledoforbreakcontinuereturn 定义访问权限修饰符的关键字privateprotectedpublic 定义类、函数、变量修饰符的关键字abstractfinalstaticsynchronized 定义类与类之间关系的关键字extendsimplements 定义建立实例及引用都实例,判断实例的关键字newthissuperinstanceof 用于异常处理的关键字trycatchfinallythrowthrows用于包的关键字packageimport 其它修饰符关键字nativestrictfptransientvolatileassert - 标识符:
26个字母的大小写,数字0-9,_$组成。数字不能开头,不可以使用关键字。严格区分大小写(规则)- 包名:所有字母都小写
- 类名、接口名:首字母要大写,多词组成时每个词的首字母都大写。(规范)
- 变量名、函数名:多单词组成时,第一个单词小写,从第二个单词开始首字母大写
- 常量名:所有字母大写。多单词时用下划线连接
- 注释:单行注释 //; 多行注释 /* */; 文档注释/** */
- 常量和变量
常量:整数常量、小数常量、布尔(boolean)常量、字符常量(将一个数字字母或者符号用单引号标识)、字符串常量(将一个或者多个字符用双引号标识)、null常量(null)。
对于整数有四种表现形式:二进制;八进制,用0开头;十进制;十六进制,用0x开头。
变量:格式:数据类型 变量名 = 初始化值
数据类型:
- 整数类型:byte(1Byte)、short(2Byte)、int(4Byte)、long(8Byte)
- 字符类型:float(4Byte)、double(8Byte)
- 字符型:char(2Byte 0-65535)
- 布尔型:boolean(true、false)
- 类:class(引用类型)
- 接口:interface(引用类型)
- 数组:[](引用类型)
整数默认:int 小数默认:double;数字后面紧跟l表示该数字是long型的 小数后面紧跟f表示该小数是float类型
- 运算符
算数运算:
运算符运算范例结果+正号+33-负号b=4;-b-4+加 -减 *乘 /除 %取模 ++自增a=2;b=++a;
a=2;b=a++;
a=3,b=3;
a=3,b=2
--自减 +字符串相加取模时,被模数是负数,结束就是负数,模数正负对结果没有影响。
相加时只要有字符串,结果肯定是字符串
赋值运算符:
=,+=,-=,*=,/=, %=比较运算符:
==,!=,<,>,<=, >=, intstanceof(检查是否是类的对象)逻辑运算符:
运算符运算范例结果&AND(与)false&truefalse|OR(或)false|truetrue^XOR(异或)true^falsetrue!NOT(非)!truefalse&&AND(短路)false&&truefalse||OR(短路)false||truetrue位运算符:
运算符运算范例 <<左移 空位补0,被移除的高位丢弃,空缺位补0>>右移 被移位的二进制最高位是0,右移后,空缺位补0;
最高位是1,空缺位补1。>>>无符号右移 被移位二进制最高位无论是0或者是1,空缺位都用0补。&与运算 二进制位进行&运算,只有1&1时结果是1,否则是0;|或运算 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;^异或运算 任何相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0
不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1~反码三元运算符:
(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
三、程序控制语句
- 判断结构
if格式
if(条件表达式)
{
}if(条件表达式)
{
}
else
{
}if(条件表达式)
{
}
else if(条件表达式)
{
}
else
{
}switch格式
switch(表达式)//只支持byte,short,int , char四种类型{ case 取值1: 执行语句; break; case 取值2: 执行语句; break; … default: 执行语句; break;}
case 和default的顺序没有要求。但是只要条件符合之后就不会再判断条件,直到遇到break或者switch的结束括号。
- 循环结构
while语句格式 :
while语句格式 :
while(条件表达式)
{
执行语句;
}do while语句格式:
do
{
执行语句;
}while(条件表达式);for格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
} - 其他流程控制语句
break( 跳出) , continue( 继续)
break语句:应用范围:选择结构和循环结构。
continue语句:应用于循环结构。注:
a,这两个语句离开应用范围,存在是没有意义的。
b,这个两个语句单独存在下面都不可以有语句,因为执行不到 。
c,continue语句是结束本次循环继续下次循环。
d,标号的出现,可以让这两个语句作用于指定的范围。 - 局部代码块可以将缩小变量的作用域。
四、函数
- 函数的格式:
修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,)
{
执行语句;
return 返回值;
}返回值类型:函数运行后的结果的数据类型。
参数类型:是形式参数的数据类型。
形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。
实际参数:传递给形式参数的具体数值。
return:用于结束函数。
返回值:该值会返回给调用者。 - 函数的重载(overload)
重载的概念
在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。重载的特点:
与返回值类型无关,只看参数列表。重载的好处:
方便于阅读,优化了程序设计。
五、数组
- 格式:
格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7}; - 数组内存结构
数组的名字在栈内存存储了数组元素在堆内存的首地址,数组中元素在堆内存中
- 数组操作常见问题
数组脚标越界异常(ArrayIndexOutOfBoundsException)
int[] arr = new int[2];
System.out.println(arr[3]);
访问到了数组中的不存在的脚标时发生。空指针异常(NullPointerException)
int[] arr = null;
System.out.println(arr[0]);
arr引用没有指向实体,却在操作实体中的元素时。 - 数组常见操作
获取最值(最大值,最小值)
排序(选择排序,冒泡排序)
折半查找(二分查找) - 数组中的数组
格式1:int[][] arr = new int[3][2];
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;格式2:int[][] arr = new int[3][];
二维数组中有3个一维数组
每个一维数组都是默认初始化值null
可以对这个三个一维数组分别进行初始化
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
定义一个名称为arr的二维数组
二维数组中的有三个一维数组
每一个一维数组中具体元素也都已初始化
第一个一维数组 arr[0] = {3,8,2};
第二个一维数组 arr[1] = {2,7};
第三个一维数组 arr[2] = {9,0,1,6};
第三个一维数组的长度表示方式:arr[2].length;
注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。
内存结构
栈内存
用于存储局部变量,当数据使用完,所占空间会自动释放。
堆内存
数组和对象,通过new建立的实例都存放在堆内存中。 每一个实体都有内存地址值 实体中的变量都有默认初始化值 实体不在被使用,会在不确定的时间内被垃圾回收器回收
方法区
本地方法区
寄存器
- Java基础知识
- java基础知识
- java基础知识
- JAVA基础知识
- Java基础知识
- java基础知识
- java基础知识
- java基础知识
- java基础知识
- java基础知识
- java基础知识
- java基础知识
- JAVA基础知识
- Java 基础知识
- JAVA基础知识
- Java基础知识
- Java基础知识
- Java基础知识
- React -- 样式处理
- 集合——待整理
- 管道和IO重定向
- Mat 构造方法实例
- 第4章 面向切面的Spring--xml配置切面 笔记2
- java 基础知识
- xjb——洛谷 P1439 排列LCS问题
- 移动端布局终极解决方案hotcss
- GridControl应用点滴之Combobox
- 日记 eclipse 不能进入断点
- Redis
- 数据库:行存储、列存储
- 怎样防止重复发送 Ajax 请求?
- Scala 学习之Map(映射)讲解