java 5 8 11 版本 之父詹姆斯.高斯林
1跨平台性操作系统平台
原理:jvm java虚拟机
2jre jdk
jre 运行环境包含jvm和核心类库
jdk开发工具包含jre
3安装
bin指令工具
conf环境变量
4dos命令:
盘名:打开盘
cd 打开文件夹
tab补全
cd..退出文件夹
dir查看文件
cls清屏
cd \ \打开多级文件夹
cd\ 退回根目录
exit退出cmd
5环境变量
增加JAVA_HOME jdk目录
path变量添加 %JAVA_HOME%\bin
多版本的JDK只要修改JAVA_HOME的目录
6步骤
编写ctrl+s 保存
编译
运行
*类名和文件名相同
*注意中英文符号
*英文的大小写
bug;
1多看 2多思考,多查资料 3 多尝试,多终结
java 基础语法
注释:指定位置添加的解释说明信息
单行注释//
多行注释/* */
文档注释/** */
关键字:java语言保留(特殊含义)的单词
1全部小写
2常用软件有特殊颜色
数据类型:
一常量:程序运行不能改变的量
整型 3 浮点型 3.1 字符型 'a''我' 字符串型"abc" 布尔性true 空常量null(不能直接打印)
注意两个单引号中间必须有一个且只有一个 ""也是字符串常量
二数据类型:(基本类型,引用类型)
整型 byte +-2^(8-1) 1 有符号占一个位 00000000第一个位是符号
short 2
int默认 4
long 8
浮点型 float 4
double默认 8
字符型 char 2
布尔型 boolean 1
三变量:在运行中可以改变的量(存储数据 )
定义: type 变量名 = 值 ;可以在同一行定义多个变量并赋值
修改: 变量 = 变量值 ;
输出: 直接输出变量名
注意: 1变量名不能重复(在作用域内)
2变量必须赋值才能使用
3变量名不能用关键字
4变量值必须在类型的范围之内(L F)
标识符:变量名,类名,方法名....
1有数字,字母_ $组成
2不能数字开头
3不能用关键字
4区分大小写
规范: 小驼峰:firstName 方法和变量
大驼峰:GoodStudent 类
类型转换
自动:小范围到大范围
强制:大范围到小范围 有数据丢失
定义: 目标类型 变量名 = (目标类型) 大范围的值;
注意:2个byte相加先把byte转换成int在相加(自动提升更大的类型)
byte和double相加结果为double
byte short 编译器优化:当常量赋值是编译器自动判断在不报错
byte =10 +20;可以通过编译器。
运算符
算术运算符:对常量或者变量进行操作的符号 + - * / %
/ 整数相除得到整数要得到小数必须有浮点数
%应用:判断奇偶数,获取一个数的个位数获取10位的数(num/10)%10
+ 与字符相加是拿计算机底层字符码相加如1+a =(int)1+(int)97 A65 a97 0 =48
可以参与与字符串运算相当于字符串连接:*有运算的优先级 *与字符+直接拼接字符
赋值运算符:给变量赋值 = += -= *= /= %= &= ^= &^是位运算
i += 30; -> i=(int)(i+30) 注意 +=隐含强制类型转换
char a = 'b'+1 ; a结果c可以通过编译
自增自减:++ -- ++i i++
单独使用i++和++i一样;参与运算时i++先i先操作、++i先自增后操作
关系运算符:返回值为boolean类型 < > <= >= == !=
逻辑运算符:换回值为布尔类型 & | ^ ! (&& ||)短路
&有false则false (并且)
| 有true则true (或者)
^相同false,不同true ()
!取反 ()
三元运算符:(boolean)? a : b; 如果真返回a值;假返回b值。
数据输入:Scanner类
导包 import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
a = 0; t = ++a + a++ + a++ ; t=? 1+1+2
1 1 1 2 2 3
a a a
流程语句:顺序结构,分支结构,循环结构
分支语句
if语句:(1)if(boolean){...} 如果真运行括号内的代码。假跳过
(2)if(boolean){..1.}else{.2..}如果真运行1,假运行2
(3)if(boolean){..1}else if(boolean){...2} ...else{..n} 那个布尔值为真执行那个如果都为假执行else .
总结:如果if后面只有一句可以不写{}
swicth: swicth (表达式){
case 1值:{语句体 ;break ;}
.....
default {语句体; break; }
}
表达式类型是byte short char int String enum
swicth的穿透 case穿透case不加break。出现穿透现象,直到遇到break退出。
循环结构
for循环:格式(for (初始化;条件判断;条件控制){语句体; })
while(条件判断){语句体;}
do (条件判断) {循环体;}while(判断语句);
注意;1 do while 至少循环一次其他不一定循环
跳转控制语句
break:跳出循环
continue:跳过某次循环,继续循环
数组
应用数据类型:
定义格式:用于存储多个相同数据类型的工具。
int[] arr ; int arr[] ;两种格式
初始化: 动态初始化 ;类型[] 变量 = new 类型[数组长度];
int[] arr = new int[3]; new申请内存空间。
元素访问: 数组名[索引] ,索引从0开始并且连续每次加一。索引最大是长度-1.
默认值:整型0 浮点型 0.0 字符型空字符 布尔false 应用类型null
(局部变量)定义在方法里面的变量。栈内存
New。在堆内存
多个数组指向相同的地址,经过改变全会改变。
静态初始化 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3....};
int[] arr={1,2,3...};
char数组特殊处理打印数字名会直接打印char的内容。
面向对象
面向过程
面向对象:类和对象
类:现实具有共同属性行为的抽象事物集合。(描述)
对象:某类的一个实体。
对象的属性:对象特有的值
对象的行为:对象能够执行的操作。
属性:可以用具体值表示。
行为:一系列动作组成。
类的属性(成员变量)定义:
类的行为(成员方法)定义:
pubulic class 类名{成员变量 类型 变量名;...成员方法 pubulic 方法名(){ }... }
对线的创建: 类名 对象名 = new 类名 () ;
使用成员方法(变量):对象名.成员方法(成员变量)
成员变量 类中 堆内存 随对象消失 有默认值
局部变量 方法中 栈内存 随方法消失 没默认值
封装 关键字private 权限 成员变量
提供 get成员变量名(拿出 有换回值return) set成员变量名(赋值无换回值 = ) 方法
关键字this 修饰代表成员变量。不带默认为局部变量(同名情况)哪个对象调用就代表谁的地址
封装(封装继承多态)
构造方法:作用创建对象 功能完成对象的初始化。 修饰符 类名*要与类名相同*(参数){ }无参构造方法
调用 new 类名(); 有参构造可以(默认初始值)。
没构造方法系统默认一个无参构造方法
标准类 1成员变量用private修饰 2构造方法(有参,无参) 3成员方法(get,set)
学了这么多最后写一个简单的数组排序{9,8,7,6,5,4,3,2,1,0}重小到大.来说明学习的成果
1思路 ;用数组第一个元素和第二个元素比较。如果元素2大,则交换位置在用第一个元素和第3个元素比...直到最后一个。
第一轮下来数组为0987654321。第二轮那数组的第二元素开始做第一轮的动作直到最后,数组为0198765432。接下来往还动作。
直到排好序。
2什么时候停止:当数组的最后第二个和最后一个比较完了就可以停止循环,也就是外层循环到倒数第二元素就行了
代码:
import java.util.Arrays;
public class PxArray {
public static void main(String[] args) {
int[] arr = {9,8,7,6,5,4,3,2,1,0};
for (int i = 0; i <arr.length-1 ; i++) { //外层到倒数第二就行了
for (int j = i+1; j <arr.length ; j++) { //内层从外层下一个开始
if (arr[i]>arr[j]) { //判断大小交换位置
int temp = 0 ;
temp = arr [i];
arr[i] = arr[j] ;
arr[j] = temp ;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
|
|