一、变量类型转换规则
[基本数据类型]
1.boolean 布尔类型不参与类型转换
2.byte,short,char 都是最小类型,三者之间不进行类型转换。
3.小类型转大类型,是自动类型转换,大类型转小类型,是强制类型转换。
(byte,short,char)< int< long< float< double
4.在程序开发过程中:默认一个整数是int类型;默认小数是double类型。
5.字符串类型可以把基本类型全都转成字符串类型。
[机器语言]计算机能看懂的语言0和1
[汇编语句]一种与特定计算机架构相关的低级编程语言。在汇编语言中,每一条指令通常对应处理器的一条机器码指令。它是一种符号化的机器码,使用助记符来表示一个机器指令的操作码,同时也允许使用符号地址而非直接的内存地址。例如:doc azx。
[高级语句] if(month==1||)===> 101010
二、循环结构
1.定义--什么是循环结构?重复完成某一任务,可以使用循环结构。
2.循环结构的组成--循环条件(开始,终止,修改)+循环内容
任意一个循环结构 = 循环条件(开始条件,循环/终止条件,条件的修改)+ 循环内容(重复做的事情)
3.循环结构的分类
while: 循环次数不固定的时候
do...while[禁用]:do循环至少执行一次,但是会产生不安全问题,所以现在用的少。
for: 循环次数固定的时候
foreach :不考虑循环次数的时候
4.循环结构关键字:continue, break
continue: 停止本次循环,进行下一次循环
break: 终止循环
三、运算符
算术运算符:+ - * / % ++(自身+1 ) --(自身-1 )
解析: ++ --
[当前表达式里只有a一个元素,++在前在后没区别]
例如:
int i=6;
i++;//7
++i;//7
j=i++;//j=6 i=7
j=++i;//j=7 i=6
sout(i++);//6
[当表达式里还有其他的元素成分要完成的时候]
++ 在前,先执行自身加1,在完成其他任务;
++ 在后,先完成其任务,在进行自身加1
关系运算符: > < >= <= == !=
--->使用关系运算符,可以获得boolean的结果(只有两种结果)
逻辑运算符: && || ! & |
&& 和& 的区别:
&& 是逻辑运算符
& 既是逻辑运算符 也是 位运算符
===都表示”并且“
&& 表示短路并且 第一个条件是flase 不会执行第二个条件
& 非短路并且 第一个条件是flase 依旧执行第二个条件
例如:
int b=7;
if(a<5 & ++b>5){
System.out.println("成立");
}else{
System.out.println("不成立");
}
System.out.println(b);//b=8
int a=6;
int b=7;
if(a<5 && ++b>5){
System.out.println("成立");
}else{
System.out.println("不成立");
}
System.out.println(b);//b=7
赋值运算符:= += -=
三元运算符:( )%7==0?7:( )%7 --->简写版的if-else选择结构
运算符的执行顺序:int x= (++a>5)&&(a!=9)||(1==1?3:4)
算术> 关系 >逻辑 >赋值运算符
四、方法
1.定义
一段功能性的代码,能解决某一类问题----->方法是代码重用的一种手段/方式。
2.使用方法
(1)定义方法格式
[权限修饰符][方法修饰符][返回值类型]方法名([参数列表])[异常类型]{
[方法体]
[return]
}
a.权限修饰符:
①public(公有的)
②protected(受保护的) ---允许在同一包内或子类中访问,本包下可以用,其他包的子类也可以用
③default(没有关键字)(默认的)---本包下使用
④private(私有的)---本类下使用
b.方法修饰符:
①static 静态的:提前加载、资源共享
②final 最终的:final 固定变量 表示这个值是最终的 该方法不可以被重写。
③synchronized 同步的:用来解决多线程并发问题
可以在方法声明前加上 synchronized 关键字,这样每次只有一个线程能够进入这个方法:
public class MyClass {
private int counter = 0;
public synchronized void incrementCounter() {
counter++;
}
}
④abstract 抽象的: 该方法没有方法体---用于定规则。
⑤native 本地的 :用其他编程语言实现的功能,给java程序用。
c.返回值类型:
第一种:有返回值类型,所有变量类型都可以充当返回值类型。
第二种:没有返回值类型,--->java程序中只有一种方法没有返回值类型 ,构造方法。
第三种:返回值为空,void 代表着功能结束。
d.方法名: 标识符 ----起名规则
1.选择动词
2.使用小驼峰规则
第一个单词首字母小写,其他单词首字母大写。
e.参数列表
协助开发者,一起来完成该功能的数据,方法调用时,参数顺序不可以改变
f.异常类型: Java.7--接口-内部类-异常处理-优快云博客
g.方法体:一段功能代码
h.改变程序执行顺序的关键字
程序的三种控制结构:顺序结构,选择结构,循环结构。
i.控制循环结构的关键字
①continue --只能出现循环结构里。
②break----可以出现在循环结构,也可以出现在switch选择结构里。
④return-----只能出现在方法里,终止一个方法。
⑤System.exit(0):----系统退出
(2)使用方法
直接调用方法名:
show();
赋值调用:int day = getDaysInMonth(month,year);
// 把month,year代入getDaysInMonth方法中,得到的数据给整型数据day
五、互换
int a=9;
int b=8;
sout(a+“,"+b)
int c=a;
a=b;
b=c;
sout(a+“,"+b)
六、取余
输入一个四位数,取出每个位数上的数值:
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个四位数字");
int number = sc.nextInt();
int thousands=number/1000;
int hundreds =(number %1000)/100;
int tens=(number % 100)/10;
int units=(number %10)/1;
System.out.println("千位: " + thousands);
System.out.println("百位: " + hundreds);
System.out.println("十位: " + tens);
System.out.println("个位: " + units);
七、比较
数字比较: pwd==123 pwd==null
汉字/字母/符号比较: name.equals("admin")
例如:输入用户名admin,密码123
//登录功能:输入用户名admin,密码123
System.out.println("用户名:");
Scanner sc =new Scanner(System.in);
String name = sc.next();
System.out.println("密码:");
int pwd = sc.nextInt();
if(pwd==123&&name.equals("admin")){//字符串和汉字比较用.equals
System.out.println("登录成功");
}else{
System.out.println("登录失败");
}
八、万年历2.0
package demo;
import java.util.Scanner;
public class Pang1 {
public static void main(String[] args) {
System.out.println("year:");
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
System.out.println("month:");
int month = sc.nextInt();
System.out.println(year + "年" + month + "月");
int day = getDaysInMonth(month, year);
int sy = 0;
for (int i = 1900; i < year; i++) {
sy += getFlatLeapYear(i) ? 366 : 365;//true-->366;false-->365
}
int sm = 0;
for (int i = 1; i < month; i++) {
sm += getDaysInMonth(i, year);
}
int w = (sy + sm + 1) % 7 == 0 ? 7 : (sy + sm + 1) % 7;
System.out.println("一\t二 \t三\t四\t五\t六\t日");
for (int i = 1; i < w; i++) {
System.out.print("\t");
}
for (int i = 1; i <= day; i++) {
System.out.print(i + "\t");
if ((sy + sm + i) % 7 == 0) {
System.out.println();
}
}
}
/*
定义一个方法:来判断平闰年
有返回值类型:
使用boolean类型 :刚好可以代表平 闰年的两种情况
不需要在进一步比较
但是有时候不可以用 两个判断
*/
public static boolean getFlatLeapYear(int year) {//定义方法判断 平年或闰年
boolean boo;
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
boo = true;
} else {
boo = false;
}
return boo;//返回值
}
public static int getDaysInMonth(int month, int year) {//定义方法判断 月份天数
int day = 0;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
day = 31;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
day = 30;
} else {
day = getFlatLeapYear(year) ? 29 : 28;
}
return day;
}
}