Java 基础-(第一天)
一、Java介绍
Java是一个面向对象编程的软件开发语言(JAVA SE、JAVA EE、JAVA ME)
特点:简单、健壮、安全、跨平台、高度优化的虚拟机(缺点:语法繁琐、无法操作硬件、GUI效果不佳)
健壮性:支持容错,抛出异常,可不影响程序的正常运行
可靠性:出错的几率低
JDK javac编译器(源码 java文件->字节码 class文件) java程序开发工具+JRE
JRE JVM+Runtime Library java程序运行的环境
二、程序结构
程序结构
[public] class 类名 {
[public] 返回值类型 [void] 方法名 (参数){
执行语句;
}
}
注释符 //单行注释 /* */多行注释 /** */
多行注释用于类和方法的说明
三、变量
变量 可以持有某个基本类型的数值或指向某个对象,必须先定义后使用的原则,可重新赋值。
变量类型 变量名 = 初始值;
四、数据类型
数据类型分为基本数据类型和引用类型(class类型)
整数类型 long(8字节) int(4字节) short(2字节) byte(1字节) (long a = 1222L)
浮点类型 double(8字节) float(4字节)
布尔类型 boolean(1字节) (true false)
字符类型 char(2字节) (char s = 'a')
字符串类型 string (String str = "abc")
计算机内存的最小存储单元是字节,一个字节8位二进制数 0~255
二进制 0b 十六进制 0x
五、常量
final double PI = 3.14; //final修饰符,不可再次赋值
六、整数运算
+、-、*、/(除法运算结果为整数)
++、--、+=、-=
% 取余数
计算结果超过范围不会报错
>>、<<、>>>(不带符号位)移位
^异或(相不同结果为1)、~非运算
强制转型丢失精度(int)
七、浮点数运算
很多浮点数无法精确表示,计算存在误差,整型可以自动提升到浮点数
24/5 结果为4,不能自动提升到浮点数,改为24.0/5或24/5.0
强制转型为整型会直接丢掉小数位,24.3和24.6强制转型为整型后的结果都是24,技巧为分别24.3+0.5和24.6+0.5
运算结果超过范围,结果为最大值
八、布尔运算
关系运算符 > >= < <= == !=
与运算 &&
或运算 ||
非运算 !
三元运算符 a? b:c a为true,结果为b,相反,结果为c。b和c的类型必须相同
九、字符和字符串
字符类型 char 是基本数据类型 char c = 'a' 保存一个字符,可以是一个英文字符‘a’或一个中文字符‘中’
java使用的是unicode编码表示字符 char c = '\u0041' 表示英文字符A
字符串类型 String 是引用类型 String s1 = "abc" 字符串不可变,指向非持有
字符串的连接通过 "ab"+ "cd" 结果为"abcd"
转义字符 \n \r \t \\ \"
空值 null 空字符串 “”是一个空字符串对象
十、数组类型
数组类型 是引用类型,多个元素有相同类型时,可使用数组表示
数组的定义
int [] ns = new int[5] 其中new int[5] 初始化,大小不可改变,索引从0开始
int [] ns = new int[]{1,2,3}
十一、输入和输出
输出
System.out.println("abc") ;
System.out.print("abc");
输入
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine(); 读取字符串
int age = scanner.nextInt();读取整数
格式化输出
System.out.printf("%5.2f \n",str1); %是占位符
%d %f %s %%(表示%本身)
System.out.printf("%2$s %1$s %3$s \n","a","b","c"); 输出结果为:b a c
String str2 = String.format("%4.2f",3.1415926);
十二、if判断
程序结构
if(条件1){
执行语句1;
}
else if(条件2){
执行语句2;
}
else {
执行语句3;
}
浮点数用==判断是不靠谱
if(a==0.1) 使用if(Math.abs(a-0.1)<0.0001)
equals判断内容是否相等 a.equals(b)
如果a为null,会报错
引用类型判断是否指向同一个对象 ==
十三、switch语句
程序结构
switch(option){ option表达式
case 1: 执行语句1;break; case具有穿透性
case 2: 执行语句2;break;
default: 执行语句3;break;
}
十四、while循环
程序结构
while(条件){
执行语句;
}
十五、dowhile循环
程序结构
do{
执行语句;
}while(条件);
十六、for循环
程序结构
for(初始值;条件判断;计算器){
执行语句;
}
for(;;) 死循环
for each循环
for(int i: ns){ ns为数组
执行语句;
}
十七、break和continue
循环过程中,break跳出当前循环体,continue跳过本次循环
十八、遍历数组
int ns = {1,2,3,4};
System.out.println(ns); ns为JVM中的引用地址
for(int i =0;i <ns.length();i++){
System.out.println(ns[i]);
}
for(int n:ns){
System.out.println(n);
}
System.out.println(Array.toString(ns));快速打印数组中所有的元素
十九、数组排序
数组排序修改了数组本身
冒泡排序法 使用两层for循环
int[] ns = {3,1,4,5,2};
for (int i = 0; i < ns.length; i++) {
for (int j = i+1; j < ns.length; j++) {
if (ns[i]>ns[j]) {
int temp = ns[j]; 两个变量交换值通过中间变量
ns[j] = ns[i];
ns[i] = temp;
}
}
}
System.out.println(Arrays.toString(ns));
Arrays.sort(ns) 大数组采用快速排序,小数组采用冒泡排序
System.out.println(Arrays.toString(ns));
二十、多维数组
二维数组
int[][] ns ={
{1,2,3},
{4,5,6},
{7,8,9}
}
System.out.println(Arrays.deepToString(ns)); 快速打印多维数组
二十一、命令行参数
命令行参数String[] args就是一个String[]数组