day2学习内容
标识符和关键字
- 标识符
- 需要用户自己定义的符号
- 由 字母,数字,_,$组成
- 首字符不能为数字,Java关键字
- 大小写敏感
- 长度不受限
- 标识符分类与命名规则
- 变量和方法:第一个单词小写字母开头,后面单词首字母大写
- 类名:第一个单词大写,单词缩写每个单词都大写
- 包:都小写
- 常量:都大写,指出常量的完整意义
- 见文识意,用对应英文单词!!
- 关键字 慢慢学就都知道了
变量和常量
-
变量 在程序运行时值可变的标识符.在内存中时一段由名字的连续存储空间type varName[=value];
tips: 1. [ ]代表可有可无
2.黄色波浪线表示当前变量未被使用或其他警告,减少脏代码
-
常量 在程序运行时值不可以改变的标识符. 使用 final关键字,声明时必须初始化, final int VALUENAME = value;
Java数据类型
-
基本数据类型
-
数值型
- 整数类型
- byte(不建议使用)
- short(不建议使用)
- int: 4 个字节
- long: 8个字节, 超过9个9用它, 赋值时在数字末尾写L
- 浮点类型
- float:4个字节,后面加F
- double:8个字节
- 整数类型
-
字符型: char
-
2个字节
-
注意字符编码问题
-
转义字符 Linux下 回车到一行的头上
换行到下一行当前位置
-
-
布尔型(Boolean):值只为ture或false,不是0或1
-
-
引用数据类型(除基本类型的所有)
- 类
- 接口
- 数组
- 字符串等
tips: 1. 所有基本类型存在栈中
- 引用类型值存在堆中,栈中存堆中地址的引用,所以叫引用类型
- 栈比较小,堆很大
- 关于long型赋值需要加L :java默认整型数据为int类型,开辟的临时空间为int型,小于要输入的值的大小,所以在赋值时给数字后面写L使得开辟long型临时空间.
- 浮点型默认为double型
- 小转大自动转,大转小强转,注意精度丢失
- 小作业,了解字符编码过程
成员变量和局部变量
- 成员变量:又称为全局变量,在类中方法外,系统默认赋值
- 局部变量: 方法中的变量,声明时最好赋值,否则可能出错
Java运算符
- 和c/c++一样
- 逻辑运算符(与c/c++有点区别):
- 短路与 &&
- 短路或 || (他俩性能高)
- 与&
- 或|
- 非!
- 运算符优先级
流程控制
-
if (和c/c++一致)
-
单分支 条件成立执行操作
-
双分支 成立一个操作,不成立一个操作
-
多分支
-
嵌套
-
小练习 :输入成绩,根据成绩所处区间给予评价,0-100分.
import java.util.Scanner; public class Day2Test1 { public static void main(String[] args){ System.out.println("输入成绩"); Scanner input = new Scanner(System.in); double grade = input.nextDouble(); if(grade>=90&&grade<=100) System.out.println("真棒"); else if(grade>=80&&grade<90) System.out.println("优秀"); else if(grade>=70&&grade<80) System.out.println("一般"); else if(grade>=60&&grade<70) System.out.println("良"); else System.out.println("没有及格"); } }
上面代码给个界限判断
-
-
switch
-
必须时等值判断,不能用于区间判断
-
注意break与下坠
-
相当于特殊的if,对应具体值的情况
-
小练习判断对应月份的天数
import java.util.Scanner; public class Day2Test2 { public static void main(String[] args) { System.out.println("请输入月份(数字)"); Scanner input = new Scanner (System.in); int month = input.nextInt(); switch(month){ case 1: System.out.println(month+"月有31天"); break; case 3: System.out.println(month+"月有31天"); break; case 5: System.out.println(month+"月有31天"); break; case 7: System.out.println(month+"月有31天"); break; case 8: System.out.println(month+"月有31天"); break; case 12: System.out.println(month+"月有31天"); break; case 2: System.out.println(month+"月有可能是28天"); break; case 4: System.out.println(month+"月有30天"); break; case 6: System.out.println(month+"月有30天"); break; case 9: System.out.println(month+"月有30天"); break; case 11: System.out.println(month+"月有30天"); break; } } }//笨笨版
import java.util.Scanner; public class Day2Test2 { public static void main(String[] args) { System.out.println("请输入月份(数字)"); Scanner input = new Scanner (System.in); int month = input.nextInt(); switch(month){ case 4: case 6: case 9: case 11: System.out.println(month+"月有30天"); break; case 2: System.out.println(month+"月有可能是28天"); break; default: System.out.println(month+"月有31天"); break; } } }//机智版
上面代码给个界限判断
-
-
while循环
- 既可做已知循环次数的循环也可以做不可知的循环次数
- while
- do while
-
for循环
-
普通for: for(int i=0;i < n; i++)
- i=0 ; i<n ; i++尽量不要更改写法,一般改n(循环次数)就行.
-
增强for: for(Object obj : Array)
- for each
- 将数组内每一项取出
- obj代表Array中每一个元素
-
双重for:
-
out:for(int i=0;i < n; i++){ for(int j=0;j < n; j++) {break out ;} }//跳出内循环同时跳出外循环
-
-