JAVA 基础知识梳理
javajava能做什么java程序的结构基本单元:类java变量和常量变量常量数据类型转换
java控制台输入
运算符算数运算符关系运算符逻辑运算符赋值运算符三元运算符
分支结构循环基础循环增强循环迭代循环
一维数组数组
java
JAVA语言(目前为止)是(唯一)一门可以运行在JAVA平台的语言
Java是一门跨平台(write once,run anywhere)的面向对象的编程语言
跨平台:一套代码可以在不同的操作系统上运行
通过JVM实现跨平台,在此过程中,JVM的角色是翻译(先行条件:各个平台上得先装上JVM),即:将源码编译成字节码,然后通过虚拟机执行 JVM(java virtual machine) java虚拟机JRE(java runtime environment) 运行环境JDK(java development toolkit) 开发工具包
目录:bin
jar.exe 打jar包javac.exe 编译java源程序=>生成字节码程序 javac -encoding utf-8 可以指定java编程字符编码格式为utf-8java.exe 执行java字节码程序=>启动虚拟机javadoc.exe 生成文档
java能做什么
JavaSE Client/Server(常用于应用服务,窗口程序)(java其实不适合做窗口程序)javaEE WebAPPJavaMe 嵌入式
java程序的结构
基本单元:类
类的语法结构: public class 类名{}
类名的命名规则:
其构成元素只能有字母、数字、下划线、$、¥不能以数字开头,但是可以以数字结尾。一般以大写字母开头,每个单词首字母大写见名知意公共类类名必须和文件名一致
程序的入口 public static void main(String[] args){…}
控制台输出 System java的内置对象 system.in java标准输入流 system.out java标准输出流 System.out.print(“内容”); 输出后不换行 System.out.println(“内容”); 输出后换行
输出转义符 (是写在双引号里面的) \n : 换行符 \t : 制表符(tab键,大小为8个字母4个汉字,可调)
字节范围:bit:0/1 byte: 0 ~ 255 / 128 ~ 127
为了兼容中文及其其他外文,java所有的字符都是双字节(单字节为256,双字节25536)的(双字节编码),不过英文的第二个字节为0
java变量和常量
变量是有作用域的(生命周期) 最小作用域原则
变量
以房间为例: 房间类型——数据类型 地址房号——变量名称 入住——赋值
java 数据类型
基础类型
字符类型
单字符 char ‘?’ 单引号内必须有且只能有一个东西字符串 String “” 空字符串是允许存在的,长度范围为0~内存上限 数值类型
整数(默认为int类型) byte -128~127 256(一个字节) short -32768~32767 65536(两个字节) int ±21亿 四个字节 long 八个字节 BigInteger 不限制大小小数(默认为double类型) float 取值范围大于long,可以兼容整数(大即兼容)(近似类型,计算时容易产生微小误差) double 取值范围大于float(近似类型,计算时容易产生微小误差) BigDecimal (精确类型) 布尔类型
布尔 可以理解为包装过的bit(取值为 0/1 ) Boolean false/true //引用类型 …
java变量使用三步骤:
声明 语法:数据类型 变量名称;
变量命名规范:
其构成元素只能有字母、数字、下划线、$、¥不能以数字开头,驼峰命名法见名知意公共类类名必须和文件名一致 赋值 变量名称 = 值;使用 变量名称1 = 变量名称1+变量名称2 System.out.println(“变量名称1”); 1+2组合:数据类型 常量名称 = 值 同一类型多个变量: 数据类型 变量1,变量2…
常量
命名:final 数据类型 常量名称 = 值常量名称:不能由数字开头,全部字母大写
数据类型转换
算数表达式的最终类型取决于表达式中的最大类型
向上转型:小转大,自动转换类型 float a = 1; byte a = 120; int b = a ;向下转型:大转小,强制转换类型 float a = 1.0f; float a = (float)(1+1.0) long a= 120564564565L;
java控制台输入
导入类:import java.util.scanner; 默认导入:import java.lang.*;
创建工具对象 Scanner input = new Scanner (System.in);
控制台接受用户输入值 xxx 变量名 = input.nextXxx();
特殊 String a = input.next(); char a = input.next().charAt(0);
运算符
算数运算符
±*/ ++ a++(先取值,再+1)++a(先+1,再取值) – += -= *= /=
a=a+1 <=> a++/++a <=> a+=1 a=a+N <=> a+=N ★算数表达式的最终类型由表达式中最大类型决定
关系运算符
> >= < <= == != ★关系表达式最终结果为布尔(boolean) 1>2 false int a = ? a>=3
逻辑运算符
&& 逻辑与 二元短路与 都为true为true,否则为false|| 逻辑或 二元短路或 都为false为false,否则为true! 逻辑非 前置一元运算符 ★短路:逻辑表达式左侧表达式的结果能够确定最终结果时,右侧表达式不予执行。
赋值运算符
= 从右向左执行
三元运算符
xxx val = boolean ? V1 : V2;(如果为true,为V1,如果为false,为V2)
分支结构
单分支 if(条件){代码}双分支 if(条件){代码}else(条件){代码}多分支
if(条件){代码}else if(条件){代码}else if…elseswitch(表达式){case 常量1:代码1;break;…default:代码N;} ★if做区间条件,switch做等值条件 贯穿现象 只支持long以下的整数(包括了char在内) JDK1.8之后开始支持String 嵌套分支 if(){ if(){} switch(){} }
循环
概念:重复性操作四要素:
循环变量的声明和初始化循环条件的构建循环体循环变量的更新
使用循环解决问题
是否存在重复性操作如果存在,确定四要素选择循环结构,套用其语法 while do…while 循环次数不确定的循环 while 先判断后执行 do…while 先执行后判断 for的循环次数是确定的确认循环是否能够正常结束
基础循环
while(条件){循环体}
do{}while(); //←注意分号不要丢
for(循环变量的声明和初始化;条件;循环变量的更新){循环体}
增强循环
迭代循环
一维数组
变量概念:一种存储空间的表示
数组
概念:一组类型相同的连续的存储空间的表示优点
类型相同:不用考虑类型的问题连续:遍历
缺点
类型相同是优点也是缺点:无法解决不同类型多个值的存储空间连续是优点也是缺点:插入,移除过于繁琐
使用数组四步骤
声明 xxx[] array;★分配空间 array = new xxx[int LENGTH];赋值 array[int INDEX] = Value;使用 System.out.println(array[int INDEX]);
数组的属性(可以为0,即空数组)
不可变,new之后会变更地址长度固定:int len = array.Length;下标(索引): 0~array.length-1 若超出范围会报异常
特殊语法命名 1+2+3 : xxx[] array = {value1,value2,value3,… }; int[] arr1={}; int[] arr2={5,7,9}; int[] arr3=new int[]{5,7,9};数组元素的默认初值 String : null byte/short/int/long : 0 float/double : 0.0 boolean:false char : (char)0