java 创始人 詹姆斯·高斯林
1995年5月 由Sum公司推出
java分为三个体系(版本)
J2SE java 标准版
J2EE 企业版
J2ME 嵌入式版
java 特点
java 是完全面向对象的语言 ,支持 ,继承, 多态等面向对象的特性
是一种强制类型的语言 区分大小写字母
提供垃圾回收机制 gc
跨平台性 一次编译到处运行,不同操作系统会有不同的java虚拟机
支持多线程
JDK :java开发工具集 JRE : java运行时环境 JVM java虚拟机
javac 编辑器 将java的文件编译为。class的字节码文件
java 解释器 将字节码文件解释执行在虚拟机中
javaw 虚拟机
public class Hello {
public static void main(String[] args){
System.out.println("hello world");
System.out.println("你好");
System.out.println(45*34); }
public 公共的
class 类
Hello 类名首字母要大写
{} 花括号成对出现包含所有的额代码 不可以在花括号外面写代码
static 静态的
void 空
main 是程序的执行入口 虚拟机要从main 开始执行
String 字符串
[ ] 数组
args 参数
System 系统
out 输出
print 打印
ln 换行
每行代码都在结尾处有分号;
切记不可以用中文
每行代码独占一行
java中的注释
// 双斜杠表示单行注释
/*
表示多行注释
/
/*
*doc注释 文档注释 用来描述类 内部信息的
*/
转义字符
\t 制表符 tab 8个空格
\n 换行符 回车键 换行
变量
是一个可变的代词
定义变量的规则
1 先声明后赋值
2 变量只能声明一次 变量名不能重复
3 可以将一个变量赋值给另外一个变量
4 声明变量可以直接赋值
标识符的命名规范
标识符是用来标识 项目名 包名 类名 变量名 方法名 … 的名称
项目名 全小写
包名 com.dahua.sms.am
类名 首字母大写 如果有多个单词 所有首字母大写
变量名 首字母小写 第二个单词首字母大写 驼峰命名法
方法名 驼峰命名法
标识符中只能包含 英文字母 数字 $ _
不能以数字开头 也不能输单个数字
类名首字母要大写
标识符要见名只意
标识符不能有中文 不能有空格
八种基本数据类型
整数类型 :
byte 1字节
short 2字节
int 4字节
long 8字节
浮点类型 :
float 4字节
double 8字节
字符类型:
char 2字节
布尔类型 :
boolean 1 bit 说1字节也可以
数据类型转换
自动类型转换 : 小的数据类型 向 大的数据类型转换
强制类型转换 : 大的数据类型 向 小的数据类型转换需要在数值前加类型符号并
且会损失精度
byte -> char short -> int -> long-> double
引用数据类型: String
第一个引用数据类型
String 不是基本数据类型 但是可以当做基本数据类型来使用
与字符串相连的+ 不是加法 而是拼接
public static void main(String[] args) {
// 字符串可以表示无限的字符。
String name = "张三";
String id = "130123196605023366";
int age = 19;
int high = 175;
System.out.println("姓名:"+name+"\t"+"身份证号:"+id+"\t年龄:"+age+"\t身高:"+high);
System.out.println("****************************************");
inta = 10;
int b = 20;
// 注意如果是两个数值先进行相加,在于字符串拼接。相加的+号是加法。
System.out.println(a+b+"张三");
// 注意如果字符串与数值进行+号的拼接。其结果向后永远是拼接操作。
System.out.println("张三"+a+b); }
算数运算符 + - * / %
public static void main(String[] args) {
int a = 10;
int b = 3;
System.out.println("a+b="+(a+b));
System.out.println("a-b="+(a-b));
System.out.println("a*b="+(a*b));
// 除法运算 / 在整数中只保留商值。
System.out.println("a/b="+(a/b));
// 模余运算 %
System.out.println("a%b="+(a%b)); }
**比较运算符 > < >= <= == !=(非等于) **
比较运算符的结果是boolean (flase true )类型的值
*赋值运算符= += -= = /= %=
public static void main(String[] args) {
int a = 10;
// += 将两方的值相加,然后赋给左边的变量。
int b = 20;
a+=b;// a = a+b;
System.out.println("a的值是:"+a);
System.out.println("b的值是:"+b);
System.out.println("======================================");
a%=b;
System.out.println("注意:一定好好看,a的值是:"+a); }
**自增自减运算符 ++ – **
++ 变量自身值+1 : a++ 双加号在变量后边先计算再自增, 双加好在前面,先自增在计算。-- 同上
逻辑运算符 & && | || ! ^
& 与运算 左右两方的表达式,都为true时,其结果为true 一方为false 。其结果为false。
&& 短路与运算 左右两方的表达式,都为true时,其结果为true 一方为false 。其结果为false。 左边为false.右边不计算。
| 或运算 或运算,左右两边,只要有一边表达式为true.其结果为true.
|| 短路或运算 || 短路或运算,左右两边,只要有一边表达式为true.其结果为true. 只要左边表达式为true.右边不进行计算。
! 非运算 非真即假,非假即真。
^ 异或运算符 真真为假,假假为假,真假为真。
三元运算符?:
表达式的返回值为true时 将返回? 后面的值
为false时 将返回:后面的值
java的语法结构
顺序结构
选择结构
if(表达式){
代码块
} else{
代码块
}
注意 == 不能用来对字符串进行等值判断 要用 .equals
键盘输入
Scanner :扫描
Scanner input = new Scanner(System.in);
String name = input.next();用来接收字符串
int age = input.nextInt();用来接收整数
double salary = input.nextDouble(); 用来接收小数
switch应用
switch(变量){
case值:
back;
case值
back;
default:(如果以上都不满足则执行 default)
}
switch()括号中 只能使用的类型
String byte short int char meiju
case 值 : case后面要跟随值
break; 当代码块遇到break.立即跳出整个switch结构。 可以不写break; 代码块继续向下执行
default;缺省的,默认的。 不满足以上所有情况,就执行default中的代码
if else if 能否使用switch替换? 不能
swithc 能否使用if else if 替换? 能
while循环
while(表达式){
代码
}
循环就是周而复始 的 反复执行的程序叫做循环
while(表达式){
代码块
break; 结束循环体
}
当表达式为true时 进入循环体 当表达式为flase 时 结束循环
循环三要素
1 int i = 0;
2 i < 10;
3 i++;
do while 循环
while 循环是先判断表达式 为true 进入循环
do while 循环 先执行一次 再判断表达式 为true 进入循环 为false结束循环
for循环
for : 就是while循环的简写模式
循环三要素:
1: 循环变量
2: 循环表达式
3: 循环增量
for 循环的语法结构
i : index 索引。
循环中常使用的变量:
i j k l m n
语法一:
for(int i=0;i<10;i++){
}
语法二:
int i = 0;
for(;i<10;i++){
System.out.println(“for 循环”+i);
}
语法三:
for(int j=0;j<10;){
System.out.println(“for 循环3”+j);
j++;
}
语法四 面试题中常见 这种方法也对
for(;?{
System.out.println(“for 循环4:”);
}
continue : 当前位置结束本次循环,进入下一次循环。
break : 立即结束循环。
嵌套for循环。
外层循环,循环一次,内存循环,循环一遍。
如何跳出多重循环
public static void main(String[] args) {
//标号
c:
for(int i=0;i<5;i++){
System.out.println("*************"+i);
b:
for(int j=0;j<5;j++){
System.out.println("&&&&&"+j);
for(int k=0;k<5;k++){
System.out.println("%"+k);
if(k==3){
break c;
}
}
}
}
java中的方法
java中 方法 函数
符合编码规范的 能完成特定功能的代码块 叫做方法
无参数 无返回值的方法
public static void show(){}
方法:
public公共的
static 静态的
void 方法返回值为空
方法名 任意定义
()参数
{}代码块
重点 方法必须先定义 后调用
数组
数组是拥有相同数据类型的集合
数组是引用数据类型的
数组拥有下标从零开始
数组拥有长度 .length
数组下标越界会报异常ArrayIndexOutOfBoundsException
如何创建数组
int[] arr = new int[10]; int 类型数组,在堆内存创建长度为10的空间
使用下标向数组中添加数字
arr[0] = 98
使用下标获取数组中的数字
System.out.println(“数组第0位的值”+arr[0]);
获取没有数字的,数组中的值。 数组拥有默认值
System.out.println(arr[3]);
数组的长度 使用(数组.length) 来表示。
System.out.println(arr.length);
数组拥有长度,如果超出数组长度报异常
java.lang.ArrayIndexOutOfBoundsException
遍历数组
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" “);
其他定义方式 这种方式正确,但不建议这么写。
int arr3[] = new int[10];
int [] arr4 = new int[10];
forEach 遍历数组
for(int a : arr){
System.out.print(a+” ");
比较简单的方式。
System.out.println(Arrays.toString(arr));
如果直接打印arr是内存地址。
System.out.println(arr);
二维数组
java中没有二维数组 数组中的数组
第一个数字,表示行,第二个数字,表示列
int[][]arrs = new int[4][4];
静态定义二维数组
int[][] arrs = {
{1,3,5,7,90},
{23,55,45,65,7},
{2,4,8},
{4,100}
};
如果是个动态数组 二维数组 第一个数组,表示存放数组的个数,第二个数字,表示内部小数组的长度,可以不制定。
int [][] arrs = new int[4][];
遍历数组,可以使用嵌套循环完成。
for(int[] as : arrs){
System.out.println(Arrays.toString(as));
}
冒泡算法
public static void main(String[] args){
int[] arr = {45,3,99,7,89,22,67,1,18};
// 对数组中的所有数字进行排序。 从小到大
// 先交换一次。
for(int i=0;i<arr.length-j-1;i++){
// 判断大小
if(arr[i]>arr[i+1]){
int temp =0;
temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
System.out.println(Arrays.toString(arr));
}