java基础
一、学习建议
干!知识体系建立为第一目标。遇到难点不纠结,一个月后再回来看难点。
二、关于Java
1、java三个版本
java三个版本:JavaSE(标准版,个人电脑);JavaEE(企业版,定位在服务器);JavaME(微型版,消费性电子产品)
2、java特性和优势
-
核心优势:跨平台
-
其他优势:安全性、面向对象、简单、高性能、分布式、多线程
3、java应用程序的运行机制
编译型语言
java源程序.java,利用javac编译成字节码文件.class;最后利用虚拟机(JRE)解释执行。
4、JVM、JRE、JDK
JVM:java虚拟机,跟操作系统打交道
JRE:java运行时环境,运行java程序时需要
JDK:java开发工具包,开发程序
jdk包含jre,jre包含jvm
5、安装JDK
x86:32位 x64:64位
bin:二进制文件目录;lib:存放类库;src.zip:java源代码
环境变量配置—>测试JDK是否成功
6、java注意事项
- 大小写敏感
- 一个源文件至多只能声明一个public类
- main方法是程序入口
- 以分号为结束标记
三、java中的小概念
1、注释
类型:// ; /* /; /* */
2、标识符、关键字
变量名:myName;以字母,$,_开头
类名:TestIdentifer
3、变量
double,long (8个字节);int(4个字节)
变量分类:局部变量,成员变量,静态变量
局部变量声明并初始化后才能使用;成员变量自动初始化,从属于对象;静态变量从属于类。
4、常量
使用final修饰的叫符号常量。一旦被初始化后不能更改其值。
5、基本数据类型
char,boolean,[byte(1个字节),short(2)t,int(4),long(8)],float(4),double(8)
整型:八进制:0开头;十六进制:0x开头;二进制:0b开头。
浮点型:e2/E2(10的2次方);默认double类型,加F/f是float类型
浮点数不精确,不能做比较。如果一定要比较,用java.math下的BigInteger和BigDecimal.
字符型:用来表示在unicode编码表中的字符。双引号括起来的是字符串。转义字符
连接两个字符:""+‘a’+’\t’+‘b’
布尔型:if(flag)
6、运算符
整数运算:
若两个操作数有一个为long,则结果也为long;没有long时,结果为int。如果两个操作数有一个为double,结果为double;只有两个操作数都是float,结果才为float。
取模运算:取余,“余数”符号和左边操作数相同。
自增和自减
赋值和扩展运算符:+=,-=,*=,/=
关系运算符:结果是布尔值。char也可以用于数据的比较,会自动转为数字。
逻辑运算符:短路与&&、短路或||
位运算符:&(按位与)|^ << ~
12/2/2等于12>>2。3<<2相当于乘以两个2.
字符串连接符:
3+“4”输出–34;char做加法时作为整数运算
条件运算符:String type=score<60?“不及格”:“及格”;
6、类型转换
自动类型转换:是指容量小的数据类型可以自动转换为容量大的数据。可以将整型常量直接赋值给byte、 short、 char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可。
强制类型转换:(type)var
7、Scanner
四、控制语句
任何软件和程序,本质上都是由“变量、选择语句、循环语句”组成。
1、选择
if
if…else…
if-else if-else
2、switch语句
switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。
3、循环结构
当型;直到型
while;dowhile ;for
无限循环 for( ;; )=while(true)
break:终止整个循环;continue终止本次循环。
带标签的break和continue。outer标签
#打印100-150之间所有质数
outer:for(int i=101;i<150;i++) {
for(int j=2;j<i/2;j++) {
if(i%j==0) {
continue outer;
}
}
System.out.print(i+" ");
}
4、方法
说明:形式参数(方法定义时的参数);实参(调用时);返回值;返回值类型
return 语句终止方法的运行并指定要返回的数据
Java中进行方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本)
方法重载:
1.不同的含义:形参类型、形参个数、形参顺序不同
2.只有返回值不同不构成方法的重载
5、递归
定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。
递归体。解答:什么时候需要调用自身方法。
任何能用递归解决的问题也可以用循环解决。
#循环求n的阶乘
int a=10;
while(a>1){
result*=a*(a-1);
a-=2;
}
重载
5、递归
定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。
递归体。解答:什么时候需要调用自身方法。
任何能用递归解决的问题也可以用循环解决。
#循环求n的阶乘
int a=10;
while(a>1){
result*=a*(a-1);
a-=2;
}
参考:https://www.sxt.cn/Java_jQuery_in_action/thirteen-animation-effects.html