java基础一
java 1995年 sun 2009年 ORACLE
java SE
java ME
java EE
JVM:Java Virtual Machine java虚拟机
流程:以.java为后缀的源文件,默认不能执行 —— 编译器,使用javac命令 —— 以.class为后缀的二进制字节码文件,该文件不受平台限制 —— 解释器,使用java命令, JVM中包含解释器 —— 最终的java程序
JDK:Java Development Kit java开发工具包
JRE:Java Runtime Environment java运行环境
JDK包含JRE,JRE包含JVM
访问指示符(public protected private)放在类内定义的数据成员或方法的最前面
访问指示符只控制着对这个特殊定义的访问
与C++不同,在C++中访问指示符控制着其后面的所有定义,直到又一个访问指示符出现
不指定访问指示符就是默认的访问,默认的访问没有关键字,通常称为“友好的(friendly)”访问,当前包内的其他所有类(不论它使用什么访问指示符)都能访问“友好的”成员,包外的所有类不能访问
由于一个编译单元(一个文件)只能属于一个包,所以一个编译单元内的所有类相互间都是自动“友好”的;友好元素拥有“包访问”权限
因为友好访问,我们将相关的类都写在一个包里,这些类之间就能够方便地相互访问
类控制着哪些代码能够访问自己的成员
万物皆对象,只要是客观存在的事物都可以称为对象
面向对象是指更关注具体事物的信息
类是模子,用来确定对象将会有的特征(属性)和行为(方法)
类是对象的类型,是具有相同属性和方法的一组对象的集合
属性——对象拥有的各种特征
每个对象的每个属性都有特定值
方法——对象执行的操作
windows环境下java开发环境的搭建
第一步 安装JDK 不同平台、不同环境JDK安装文件不同,windows64位和windows32位也是不一样的,默认安装到C盘,C盘里面有java文件夹,java文件夹里面有jdk1.7.0_13文件夹,jdk1.7.0_13文件夹里面有bin文件夹,bin文件夹里面都是.exe为后缀的可执行文件,这些可执行文件中就有javac.exe和java.exe,jdk1.7.0_13文件夹里面还有lib文件夹,lib文件夹里面有java开发中需要用的类库文件,都是以.jar为后缀的
第二步 配置环境变量 JAVA_HOME 配置JDK安装路径 Path 配置JDK命令文件的位置(bin文件夹的路径) CLASSPATH 配置类库文件的位置(lib文件夹的路径)
1.右键“计算机”——选择“属性”——打开以后,选择“高级系统设置”——选择“系统属性”弹窗的“高级”,再选择“环境变量”——在“系统变量”的下面选择“新建”——在弹窗的“变量名”中填“JAVA_HOME”,在“变量值”中填jdk1.7.0_13文件夹的路径
2.“系统变量”中默认就有Path变量,选中Path变量,再选择“系统变量”下面的“编辑”,在已有的“变量值”最前面添加bin文件夹的路径并且用分号隔开
3. 新建CLASSPATH变量,“变量值”中先写.号再写分号最后才填入ib文件夹的路径,.号代表当前路径,分号把路径名隔开
验证 在命令行中输入java按回车和输入javac按回车后都有命令提示就说明成功了
让windows显示文件拓展名,双击“计算机”,在菜单栏中选择“工具”,再选择“文件夹选项”,在“文件夹选项”弹窗中选择“查看”选项卡,在“高级设置”中去掉“隐藏已知文件类型的拓展名”选项前面的对勾再选择最下面的“确定”
在命令行中输入E:可切换到E盘的根目录,不区分大小写,再输入dir可查看目录中的内容,使用javac XXX.java可以编译java源文件,这是在XXX.java的同目录下就会出现XXX.class文件,点开XXX.class是乱码,不能执行,使用java XXX可执行这个XXX.class文件,注意“java XXX”不要输入文件后缀
使用Eclipse开发java程序
1. 创建java项目:在Package Explorer里右键,选择New,选择Java Project
2. 创建程序包:右键src,选择New,选择Package,包名一般是域名的反向
3. 编写java源程序:右键包,选择New,选择class,在弹窗中填类的名称(不要写.java或.class后缀),这里的类名一定要和文件中定义的类名一样
4. 运行java程序:在文件的空白地方右键,选择Run As,选择Java Application
所有的java程序都以类为组织单元
public class 类名 {
…… ……
}
class是关键字
类名首字母必须大写
创建对象:
类名 对象名 = new 类名();
把java源文件中的信息放在内存中,此时这些信息的集合就是对象,这个过程就是实例化
对象名.属性 可以使用该对象的属性或者给该属性赋值
对象名.方法名() 可以调用该对象的方法
因为我们会把类实例化变成对象进行操作,所以属性也被称为实例变量
类是对象的类型
因为默认浮点数是double型,所以给float型变量赋值时需在后面加f
把一个类实例化变成对象
具有特殊用途的词被称为关键字,java关键字区分大小写

java标识符是给java程序中包、类、方法、变量等命名的符号
标识符可以由字母、数字、下划线、美元符号组成,但不能包含@、%、空格等其他特殊字符,不能以数字开头
标识符不能是Java关键字和保留字(Java预留的关键字,以后的升级版本中可能作为关键字),但可以包含关键字和预留字
标识符区分大小写
变量相当于容器,Java中通过三个元素来描述变量:变量类型、变量名和变量值
在Java程序中,可以根据所要保存的数据的格式将其保存在指定类型的变量空间中,并能通过变量名迅速定位
使用"+"进行字符串拼接
给变量重新赋值时,不用在变量名前写变量类型
变量名由多个单词组成时,用驼峰
Java语言是一种强类型语言
在Java中存储的数据都是有类型的,必须在编译时就确定其类型

在Java中,基本数据类型变量存的是数据本身,而引用数据类型变量存的是保存数据的空间地址

为float变量赋值时在数值后添加字母f
为char变量赋值时使用单引号将值括起来
String是引用数据类型
Java中的变量需要先声明后使用
一次只能给变量赋一个值,但可以多次赋值
main方法中定义的变量必须先赋值才能输出
不建议在程序中使用中文变量名
自动类型转换:
Java程序中,不同的基本数据类型之间经常需要相互转换,例如:
int a = 82;
double b = a;
SyStem.out.println(b);代码中int型变量可以直接为double型变量赋值,结果为82.0
要求:
目标类型能兼容源类型,double类型能兼容int类型,char类型不能兼容int类型
目标类型大于源类型,double类型长度为8字节,int类型长度为4字节,因此double类型的变量里可以存放int类型的数据
强制类型转换:
语法:(数据类型)数据 或 (数据类型)变量名
强制类型转换可能会造成数据丢失,double类型强转成int类型时会直接裁掉小数位,而不是四舍五入
Java常量:
值被设定后,在程序运行中不允许被改变
语法:final 类型 常量名 = 值; 常量名一般是全大写
int a=5;int b=++a;这时a、b都是6,先让a自增然后再赋值
int a=5;int b=a++;这时a为6,b为5,先赋值再让a自增
自增、自减运算符只能和变量名搭配,不能直接搭配数值或常量
> < >= <=只支持两侧都是数值类型
^是异或的意思,当a和b有且仅有一个为true时a^b才返回true

equals()判断字符串的内容是否相同
String weather = "good";
weather.equals("bad") 返回false
当需要对选项进行等值判断时,使用switch语句
switch后面小括号中表达式的值必须是整型或字符型
case后面的值可以是常量或常量表达式,不能是变量或变量表达式
case匹配后,执行匹配块里的代码,如果没有遇见break,会继续执行下一个case块里的代码(default块里的代码也执行),直到遇见break或switch语句块结束
while(){
}先判断再执行
do{
}while()先执行再判断
for(循环变量初始化;循环条件;循环变量变化){
}
循环变量初始化在整个循环中只执行一次
for关键字后面括号里的三个表达式必须用分号隔开,三个表达式可以省略,但分号不能省略
若循环变量初始化和循环变量变化中有多个循环变量可以使用逗号分隔
循环条件中可以使用逻辑运算符组合的表达式来表示复杂的判断条件,但要注意逻辑运算符的优先级
break:退出循环
continue:跳过本次循环剩下的代码,直接执行下一次循环
for循环还可以写成:
for(数据类型 元素变量 : 遍历对象){
}
使用Scanner工具类来获取用户输入的信息,它在java.util包中
导入包的操作:import java.util.Scanner放在package com.imooc下面
导入包之后要创建Scanner对象,才能使用Scanner工具类暴露出来的方法
类是对象的类型,Scanner input = new Scanner(System.in);
保存输入的信息:int a = input.nextInt();
调试时按F6是按步执行
数组按顺序存放多个类型相同的数据,如int[] arr = {1,2,3};等价于int[] arr = new int[]{1,2,3};其中new int后面的[]内必须为空,不能指定数组长度
声明数组:数据类型[] 数组名;或者 数据类型 数组名[];
给数组分配空间:指定数组中最多存放多少个数据,数组名 = new 数据类型[数组长度];
也可以在声明数组的同时为它分配空间:int[] arr = new int[5];
赋值:arr[0] = 99;
java.util包中的Arrays工具类提供一些直接操作数组的方法,如:
Arrays.sort(数组名);可将数组按升序排序,还能把数组中的单词按照首字母升序排序
Arrays.toString(数组名);可将数组转化为字符串,转化后元素之间用逗号和空格隔开
声明二维数组并分配空间:数据类型[][] 数组名 = new 数据类型[行数][列数];
或者 数据类型[][] 数组名;数组名 = new 数据类型[行数][列数];
赋值:数组名[行索引][列索引] = 值;
也可以在声明数组的同时为其赋值:数据类型[][] 数组名 = {{值00,值01……},{值10,值11……}}
其中,数组名.length指的是二维数组中含有一维数组的个数,数组名[行索引].length指的是二维数组第(行索引+1)行含有的数据的个数
二维数组中包含的子数组也可以长度不同,声明二维数组时可以先指定行数,然后再为每行指定列数,如:
int[][] arr = new int[3][];
为第一行分配两列:arr[0] = new int[2];
定义方法的语法:
访问指示符 返回值类型 方法名(参数列表){
方法体
}
参数列表中每个参数由参数类型和参数名组成,以空格隔开
调用方法:先创建类的对象,通过 对象名.方法名() 来调用方法
如果方法的返回值类型是void,则方法中不能使用return来返回值
方法的返回值最多只能有一个,也可以包含表达式,如return arr.length;
调用带参数的方法时,必须保证实参的数量、类型、顺序与形参一一对应,而且实参不用指定数据类型
String是引用数据类型
如果同一类中包含两个或两个以上方法名相同、方法参数的个数、顺序或类型不同的方法,则称为方法的重载,与方法的访问指示符和返回值类型无关
当调用被重载的方法时,java会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被调用
int num = (int)(Math.random()*100);生成1-100的随机整数,其中Math.random()生成0-1之间的浮点数
for(int i=arr.length-1;i>=0;i--){
System.out.printlln(arr[i]);
}

浙公网安备 33010602011771号