注释
/*
注释是不被编译的内容。
这里面可以写多行注释。
java里最基本的组成单位是类。
类的定义格式:
public class 类名 {
}
这是我定义的HelloWorld类
*/
public class HelloWorld {
//这是单行注释。
//这是main方法
//main是程序的入口,每个程序有且只有一个main。
public static void main(String[] args) {
//这是输出语句,“”引号里面的内容是可以改变的,且不会被编译,会直接输出。
System.out.println("HelloWorld");
}
}
关键字:
关键字的特点:
关键字的字母全部都是小写
常量:
在程序运行过程中,不可以发生改变的值就是常量。
常量分类;
字符串常量:用双括号括起来的内容 “这是字符串常量”
整数常量:不带小数的数字 6,66,666
小数常量:带小数的数字 13.14,5.20
字符常量:用单引号括起来的内容 '你',‘我’,‘他’
布尔常量:布尔值,表示真或假 true 真,false 假
空常值:一个特殊的值,空值 null值 ,空常量不能直接输出。
数据类型
数值型:
整数: byte,short,int,long
浮点数:float,double
字符:char
非数值型:
布尔:boolean
引用数据类型:
类:class
接口:interface
数组:[]
变量:
在程序运行中,值可以发生改变的量
int a = 10; //在内存中开辟一块空间用来存储10,空间的名字定义为a,数据类型为整形。
a = 20;//将变量a的值重新赋值为20。
变量的使用注意事项:
1 变量名不能重复。
2 变量未赋初值,不能使用。
3 long类型的变量定义的时候,为了防止整数过大,后面要加L。
4 float类型的变量定义的时候,为了防止类型不兼容,后面要加F。
标识符:
标识符的定义规则:
有数字,字母,下划线__和美元符¥组成
不能以数字开头
不能是关键字
类型转换:
自动类型转换:
把一个表示数据范围小额数值或者变量赋值给另一个范围大的变量。
数据范围从小到大:
byte < short/char < int < long < float < double
强制类型转换:
把一个表示诗句范围大的数值或者变量赋值给另一个表示数据范围小的数值。
格式:目标数据类型+变量名=(目标数据类型)值/变量。
例如 int a = (int)13.14 会损失小数点后的小数
运算符和表达式:
运算符:对常量或者变量进行操作的符号。
表达式:用运算符吧畅享或者变量连接起来符合java语法的式子就可以称为表达式,
不同运算符连接的表达式体现的是不同类型的表达式。
例子 int a = 10;
int b = 20;
int c = a + b;
+ 是运算符,并且是算是运算符。
a + b 是表达式,由于 + 是算术运算符,所以这个表达式叫算术表达式。
算术运算符:
+ 加
- 减
* 乘
/ 除
% 取模/取余 取两个数相除的余数 例如:5 % 2 = 1;
字符和字母以及符号在计算机储存方式是以SAC表的方式存储,
‘A’ ----> 65 A----Z是连续的。
‘a’------> 97 a-----z是连续的。
‘0’-------> 48 0----9是连续的。
算术表达式中包含多个基本数据类型的值得时候整个算术表达式的类型会自动进行提升
提升规则:
byte类型,short类型和char类型江北提升到int类型。
整个表达式的类型自动提升到表达式中最高等级操作数同样的类型
等级顺序: byte,short,char->int->long->float->double;
赋值运算符:
= 赋值; a = 1;将1赋值给a;
+= 加后赋值; a+=b;将a+b的值赋值给a;
-= 减后赋值; a -= b;将a-b的值赋值给a;
*= 乘后赋值; a *= b;将a*b的值赋值给a;
/= 除后赋值; a /= b;将a/b的值赋值给a;
%=取模后赋值;a %= b;将a÷b的余数赋值给a;
自增自减运算符:
++ 自增 变量的值+1;
-- 自减 变量的值-1;
a = ++b; b先+1再赋值给a;
a = b++; b先赋值给a再+1;
关系运算符:
== a == b,判断a和b的值是否相等,成立为true,不成立为false;
!= a!= b,判断a和b的值是否不相等,成立为true,不成立为false;
> a > b,判断a是否大于b,成立为true,不成立为false;
< a < b,判断a是否小于b,成立为true,不成立为false;
>= a >= b,判断a是否大于等于b,成立为true,不成立为false;
逻辑运算符:
& 逻辑与 a&b,a和b都是true,结果为true,否则为false。
| 逻辑或 a|b,a和b都是false,结果为false,否则为true。
^ 逻辑异或 a^b,a和b结果不同为true,相同为false。
! 逻辑非 !a,结果和a的结果正好相反
短路逻辑运算符:
&& 如果左边为真,右边执行;如果左边为假,右边不执行。
|| 如果左边为假,右边执行;如果左边为真,右边不执行。
三元运算符:
a > b ? a : b;判断a>b 为真执行a;为假则执行b。
三元运算符与获取输入代码实例:
import java.util.Scanner; //引入包
public class HelloWorld {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//创建对象
int height1 = sc.nextInt();//获取输入
int height2 = sc.nextInt();//获取输入
int height3 = sc.nextInt();//获取输入
int tempHeight = height1 > height2 ? height1:height2; //判断大小存入零时变量
int maxHeight = tempHeight > height3 ? tempHeight:height3;//判断大小存入maxHeight
System.out.println("maxHeight" + maxHeight);//输出
}
}
if语句:
格式:
if(关系表达式){
语句体;
}else{
语句体2;
}
执行流程:
1 首先计算关系表达式的值;
2 如果关系表达式的值为true就执行语句体1;
3 如果关系表达式的值为false就执行语句体2;
4 继续执行后面的语句内容;
通过键盘输入判断奇偶数:
import java.util.Scanner;
public class HelloWorld {
Scanner sc = new Scanner(System.in);
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(num % 2 == 0){
System.out.println("这个数是偶数!");
}
else{
System.out.println("这个数是奇数!");
}
}
}
通过键盘输入返回星期几:
尝试用了while循环。。
import java.util.Scanner;
public class HelloWorld {
Scanner sc = new Scanner(System.in);
public static void main(String[] args){
while (true){
System.out.println("请输入一个数字:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(num == 1){
System.out.println("星期一");
}
else if(num == 2){
System.out.println("星期二");
}
else if(num == 3){
System.out.println("星期三");
}
else if(num == 4){
System.out.println("星期四");
}
else if(num == 5){
System.out.println("星期五");
}
else if(num == 6){
System.out.println("星期六");
}
else if(num == 7){
System.out.println("星期日");
}
else if(num == 2){
System.out.println("星期二");
}
else{
System.out.println("请重新输入");
}
}
}
}
switch语句
switch语句格式:
switch(表达式){
case 1:
语句体1;
break;
case2:
语句体2;
break;
case 3:
语句体3;
break;
default:
语句体n+1;
[break;]
}
表达式:取值为byte、short、int、char、JDK5以后可以使枚举,SDK7以后可以是string。
case:后面是要和表达式进行比较的值。
break:表示终端,结束的意思,用来结束switch语句。
default:表示没有case匹配就执行该处的内容。与if语句中的else相似。
通过switch语句判断输入月份为什么季节:
以我的理解,既然没有break就会继续执行,这样就可以省略几行输出,只在3/6/9/12月份输出季节并break,
后面运行证明我的猜测是正确的,原来这个叫case穿透。
import java.util.Scanner;
public class HelloWorld {
Scanner sc = new Scanner(System.in);
public static void main(String[] args){
while (true){
System.out.println("请输入一个数字:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
switch(num){
case 1:
case 2:
case 3:
System.out.println("春季!");
break;
case 4:
case 5:
case 6:
System.out.println("夏季!");
break;
case 7:
case 8:
case 9:
System.out.println("秋季!");
break;
case 10:
case 11:
case 12:
System.out.println("冬季!");
break;
default:
System.out.println("输入错误!");
}
}
}
}
循环语句:
for循环语句:
循环结构的组成:
初始化语句:用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样。
条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去。
循环体语句:用于表示循环反复执行的内容,简单说就是循环反复执行的事情。
条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去。
循环结构对应的语法:
初始化语句:这里可以是一条或者多条语句,这些语句可以完成一些初始化操作。
条件判断语句:这里使用一个结果值为boolean类型的表达式,这个表达式能决定是否执行循环体。比如:a
循环体语句:这里可以是任意语句,这些语句将反复执行。
条件控制语句:这里通常是视同一条语句来改变变量的值,从而达到控制循环是否继续乡下执行的效果。常见的有i++,i--这样的操作。
获取水仙花数:
从100开始到999,取模10获得个位,除10模10获得十位,除10除10模10获得百位。
再a的三次方加上b的三次方加上c的三次方等于i 输出,则获得水仙花数。
public class HelloWorld {
public static void main(String[] args){
int a = 0;
int b = 0;
int c = 0;
for(int i = 100;i < 1000;i++){
a = i % 10; //获取个位
b = i / 10 %10;//获取十位
c = i / 10 / 10 %10;//获取百位
if(a*a*a+b*b*b+c*c*c == i){
System.out.println("这个数是水仙花数:"+ i);
}
}
}
}
while循环语句:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
执行流程:
1 执行初始化语句
2 执行条件判断语句,看结果为true还是false
如果是false,循环结束
如果是true,继续执行
3 执行循环体语句
4 执行条件控制语句
5 回到 2 继续
三种循环的区别:
for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
do....while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
for和while的区别:
条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了。
条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束购,该变量还可以继续使用。
跳转控制语句:
continue 用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行。
break 用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环。
Random:
作用:用于产生一个随机数
使用步骤:
1 导包
impute java.util.Random;
导包的动作必须出现在类定义的上面
2 创建对象
Random r = new Random();
上面这个格式里面,r是变量名,可以变,其他的都不允许变。
3 获取随机数
int number = r.nextInt(10);//获取数据的范围:[0,10] 包括0,不包括10
上面这个格式里面,number是变量名,可以变,数字10可以变,其他的都不允许变
通过random 实现猜数字游戏:
import java.util.Random;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args){
Random r = new Random();
int number = r.nextInt(100)+1;
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("请输入数字:");
int huessNumber = sc.nextInt();
if(huessNumber > number){
System.out.println("猜大了!");
}else if(huessNumber < number){
System.out.println("猜小了!");
}else{
System.out.println("恭喜你猜对了!");
break;
}
}
}
}
IDEA中内容辅助键和快捷键
快速生成语句
生成main方法 psvm+回车
快速生成输出语句 sout+回车
内容辅助键
ctrl+Alt+space(内容提示,代码补全)
快捷键
注释
单行:选中代码 Ctrl+/ 再来一次取消
多行:选中代码 Ctrl+shift+/ 再来一次取消
格式化
Ctrl+Alt+l
获取数组元素个数
格式:数组名.length
例:arr.length
类和对象
1.1什么是对象
万物皆对象,客观存在的事务皆为对象。
1.2什么是面向对象
我们所了解一个对象的信息,并且关注它就是面向对象。
1.3什么是类
类是现实生活中一类具有共同属性和行为的事务的抽象。
类的特点:
类是对象的数据类型
类是具有相同属性和行为的一组对象的集合
1.4什么是对象的属性
属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值。
1.5什么是对象的行为
行为:对象能执行的操作
1.6类和对象的关系
类:类是对现实生活中一类具有共同属性和行为的事物的抽象。
对象:是能够看得到摸得着的真实存在的实体。
1.7类的定义
类的重要性:是java程序的基本组成单位
类是什么:是对现实生活中一类具有共同属性和行为的事务的抽象确定对象将会拥有的属性和行为。
类的组成:属性和行为
属性:在类中通过成员变量来体现(类中方法外的变量)
行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
类的定义步骤:
1、定义类 public class类名{
2、编写类的成员变量 //成员变量
3、编写类的成员方法 变量1的数据类型 变量1;
变量2的数据类型 变量2;
。。。。。。。。
//成员方法
方法1;
方法2;
。。。
1.8对象的使用
创建对象:
格式:类名 对象名 = new类名()
范例:Phone p = new Phone();
使用对象
1.使用成员变量
格式:对象名。变量名
范例:p.brand
2.使用成员方法
格式:对象名。方法名()
范例:p.call()
封装
private关键字
是一个权限修饰符
可以修饰成员(成员变量和成员方法)
作用是保护成员不被别的类使用,被private修饰的成员只有在本类中才可以访问
针对private修饰的成员变量,如果需要被其他类使用,提供相应的方法
提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰
提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
this关键字
1、this修饰的变量用于指代成员变量
方法的形参如果与沉管变量同名,不带this修饰的变量指的是形参,而不是成员变量。
方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量。
2、什么时候使用this呢? 解决局部变量隐藏成员变量
3、this:代表所在类的对象引用
记住:方法被哪个对象调用,this就代表哪个对象
String
public boolean equals (Object an Object) : 比较字符串的内容,严格区分大小写(用户名和密码)
public char charAt (int index): 返回指定索引处的char值
public int length (): 安徽此字符串的长度
StringBuilder
StringBulider 的添加和反转方法
public StringBulider append(任意类型) // 添加数据,bin返回对象本身
public StringBuilder reverse() //返回相反的字符序列
StringBuilder
StringBuilder 和String相互转换
public String toString():通过toString()就可以实现把StringBuilder转换为String
String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把String转换StringBuilder
集合基础
ArrayList构造方法和添加方法
public ArrayList() 创建一个空的集合对象
public boolean add(E a) 将指定元素追加到此集合的末尾
public void add(int index,E element) 在此集合中的指定位置插入指定的元素
ArrayList集合常用方法
public boolean remove(Object o) 删除指定的元素,返回删除是否成功
public E remove (int index) 删除指定索引处的元素,返回被删除的元素
public Eset(int index,E element) 修改指定索引处的元素,返回被修改的元素
public E get(int index) 返回指定索引处的元素
public int size() 返回集合中的元素的个数