首页 > 代码库 > java_第一次笔记

java_第一次笔记

javaEE eterprition edition 企业版
javaSE standard edition 标准版
dir 列出当前目录
md make dir
rd remove dir
cd change dir
cd .. 回退
cd \ 退到根目录
del 删除文件

环境变量
C:\Program Files\Java\jdk1.8.0_101\bin;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

以类的形式存在 class
定义类
有主函数
编译 javac
运行 java
public static void main(String[] args)
主函数保证该类的独立运行
System.out.print("hello world");
set classpath = c:\myclass 设定临时class路径
告诉JVM到指定的路径执行该class
若没有配置则到当前的路径查找class文件
set classpath = c:\myclass; 加上;以后,先去指定路径查找,查找不到以后到当前目录找。
set classpath 查看当前class环境变量

关键字 都是小写 类名首字母最好大写 Demo_Test_1
标识符 自定义的一些名称
注释
/**
文档注释。
可以通过javadoc.exe 程序提取的注释
可以生成一个文档
*/


常量:不能改变的数据
布尔常量:true false 两个。
字符常量:‘a‘ ,‘b‘ ,‘5’ 使用单引号‘’标识。
字符串常量"asddds" "a" ""
null 空常量
负数 -> 二进制正数的取反加一。

变量:变化的数据
内存的一个存储区域,该区域有自己的名称(变量名)和数据类型。{内有效}

变量:基本数据类型:
数值型:整数类型 byte(8bit) short(16bit) int(32bit) long(64bit)
浮点类型 float(32bit) double(64bit)
字符型:char(16bit)
布尔型:boolean

默认双精度 double
单精度 float a = 2.3f;
Integer.MAX_VALUE; int 最大值

运算符:
算术运算符 + - * / %%%%%%%(取余数,模运算)
+(连接符) :::任何和字符相连的+号都是连接符,相连接
+= -= *= /=
+= 将 左右两边的和 赋值给左边

比较运算符:== != < > <= >= instanceof 检查是否是类的对象
逻辑运算符: & |
^(异或): 相异为true
!(非)
&&(短路,双与) false&&true 左边是假的左边不运算//与C语言一致
右边也需要运算的情况下用单与 &
位运算符:<< >> >>>>(无符号右移)

三元运算符:(表达式0)? 表达式1:表达式2

判断语句
if()
{
}
else
{
}

{int a = 1;} 出了括号以后变量内存释放 ,最近的括号是作用域
局部代码块可以定义局部变量的生命周期

选择结构:
switch()
{
case 值一:
{语句一;break;}

case 值二:
{语句二;break;}

default:
{语句n;break;}
}
break 语句用于结束switch语句,最好不要省略,在{}最后的break可以。
先执行case ,再执行default

循环语句
while
do while
for
while()
{

}
for(;;) //中间不写 默认为true

contine: 完成当前次数的循环,继续下一次的循环,只在循环结构里面使用。

函数也称 方法

主函数 有修饰符 static
调用函数是静态的。
被调用的也得是静态
static int add(int a, int b)

定义一个函数
修饰符 返回值类型 函数名(参数形式 参数1,参数形式 参数2)
{
return 返回值;
}

void 不返回

函数只能调用函数,不可以在函数内部定义函数

调用栈。。。

重载(overload):重复载入
在同一个类中,允许存在一个以上的同名函数。但两个同名函数的参数个数必须不同,或者参数类型必须不同。
/*
1.同一个类。
2.同名。
3.参数不同,Or 参数类型不同。
4.函数的重载和返回值无关。
5.java 是严谨性语言,如果函数出现调用不确定性会编译失败。
*/
函数名必须体现功能。同样是加法,都取名add

数组
数组是一个容器。从0开始。同一类型。
int[] arr = new int[5];
int[] arr = new int[]{1,2,3};
int[] arr = new int{1,2,4};

new --> 存储实体

arr --> 索引

数组里面的数据自动为0

数组的内存分布

/*
内存划分
1.寄存器 //cpu处理
2.本地方法区 //和所在系统相关
3.方法区 //
4.栈内存 //存储的都是局部变量,凡是定义在方法中的变量。
一旦离开作用域,局部变量就被释放。所以栈内存更新速度很快。
5.堆内存
存储数组和对象。(数组就是一种对象)
对象都是new出来的。都存在堆内存中。堆里面的都是实体。实体用于封装数据。
特点:
1.每一个实体都有一个首地址值。
2.堆内存中的每个变量都有默认初始化值,根据类型的不同而不同(全0?)
arr引用了堆内存的实体。 指向? 指针?
arr 不指向堆内存
arr = null;
没被指向的堆内存的东西变成了垃圾,垃圾会被自动回收(不定时)。
3.垃圾回收机制(内存管理)
*/

运行时 堆内存里的数据才产生。

数组具备的属性:
length

排序:选择排序:第一个和后面的所有比较,最小的会放到最前面。

冒泡排序:相邻两个比较--> 最大的会沉到最底。前面的挨个靠前了。

排序包含:
import java.util.*;
Arrays.sort(); 自动排序。
最快的排序: 希尔排序

有序查找可以用折半查找。
无序只能挨个查找。


二维数组:
int[][] arr = new int[3][2];
-------------------------------------
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[3];

int[][] arr = {{1,2},{,3,4,5},{8,9}};

 

java_第一次笔记