2020-09-08课堂笔记
- 主知识点
-
- 1.java程序基本结构
- 2.驼峰命名法
- 3.数据类型
- 4.变量
- 5.数据类型转换(自动转换和强制转换)
- 6.字符串注意事项
- 7.集合(list)与数组
- 8.分支结构
- 9.循环结构
- 10.主动抛异常
- 11.主函数main(args)回调方法
- 12.continue与break
- 项目案例(2个)
主知识点
1.java程序基本结构
注:
1.package行可以有0个或者多个,一般在程序的最前面
2.import行可以有0个或者多个,一般在包之后,类名之前
3.主程序入口参数String[] args 与String args[]具有同等效应,推荐使用前者,方便理解
2.驼峰命名法
一般用于定义变量,类名、属性、命名空间等,除第一个单词小写外,其余单词首字母大写
如myFirstProject
3.数据类型
包括基本数据类型8种和引用数据类型
下表列出了8种基本数据类型和对应的默认值
类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
boolean | false |
char | ‘u0000’ |
4.变量
1.局部变量
2.全局变量
3.参数变量
注:局部变量包含参数变量,但二者具有细微差别
参数变量无需定义,局部变量需要先定义
5.数据类型转换(自动转换和强制转换)
在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换。
可以从存储范围大的转换到存储范围小的;
byte<-short<-int<-long<-float<-double
格式:type b=(type)a (type代表类型,参考上表基本数据类型)
注:可能造成精度丢失!!需谨慎!
6.字符串注意事项
1.字符串拼接将其他字符自动转换成字符串类型
如下列代码块,运行结果是Hello JavaEE51
而不是Hello JavaEE6
public class test
{
public static void main(String[] args)
{
System.out.println("Hello JavaEE"+5+1);
}
}
只有当格式为下列代码块时,才能打印出6
public class test
{
public static void main(String[] args)
{
Ststem.out.println("Hello JavaEE"+(5+1));
}
}
字符串拼接时需要注意,所有都会变成string类型,如有需求,应添加小括号,来保证程序的正确性
7.集合(list)与数组
1.list集合的创建与追加、删除
List<String> list=new ArraryList<String>();
list.add("hello java");
list.remove(XXX);//xxx可以填充索引,也可以填充Object o(内容)
2.一维数组的两种创建
int array[]=new arrary[length];
String array[]={ "X","XX","XXX","XXXX"};
8.分支结构
分支结构包括if单路分支,if-else、if-else-if、switch-case、三目运算
9.循环结构
循环结构包括while、do-while、for、for-each
注:
1.do-while循环的循环体至少执行一次
2.for-each比for性能更高!
如下利用for-each循环遍历list集合
for(String i:list)
{
system.out.println(i);
}
10.主动抛异常
Java的异常捕获机制允许用户自定义异常,也允许用户主动抛异常
以下表格列出常见9种异常及其含义
异常 | 含义 |
---|---|
ClassCastException | 类型转换异常 |
ClassNotFoundException | 类未找到异常 |
ArithmeticException | 算数异常 |
ArrayStoreException | 数组中包含不兼容的值异常 |
ArrayIndexOutOfBoundsException | 数组下标越界异常 |
SQLException | 操作数据库异常类 |
NullPointerExxeption | 空指针异常 |
NumberFormatException | 字符串转数字抛出异常 |
FileNotFoundException | 文件未找到异常 |
11.主函数main(args)回调方法
常用于菜单,重进主函数
12.continue与break
continue:结束本次循环,进入下一次循环
break:结束循环
项目案例(2个)
1.打印实心、空心等腰三角形(且美观)
代码逻辑:双层循环,先打所有空格,然后在打*
1.实心
for(int i=0;i<n;i++)
{
for(int j=4;j>i;j--)
{
System.out.print(" ");//打印空格
}
for(int j=0;j<i*2+i;j++)
{
System.out.print("*");
}
System.out.println("\n");
}
2.空心
public class Test {
public static void main(String[] args) {
//控制行数
for(int i=0;i<5;i++)
{
//控制每行的空格数
//总行数-当前行数=每行的空格数
for(int j=4;j>i;j--)
{
System.out.print(" ");
}
// 打印每行星星数
for(int j=0;j<i*2+1;j++)
{
//判断是否打到最后一行
//1.全部要打 2.美观
if(i==4)
{
//奇数打印星星 偶数不打印星星
if(j%2==1)
{
System.out.print(" ");
continue;
}
System.out.print("*");
continue;
}
//空心 每行的第一个星星与最后一个星星打印,其余打空格
if(j==0){
System.out.print("*");
continue;
}
//最后一个
if(j==i*2)
{
System.out.print("*");
continue;
}
//其余的都打空格
System.out.print(" ");
}
//换行
System.out.println();
}
}
2.找出所有xx以内能被7整除的数(高性能,满足要求的代码)
public class test4 {
public static void main(String args[]) throws IOException
{
int n=0;
System.out.println("请输入一个整数:");
Scanner s=new Scanner(System.in);
String ss=s.nextLine();
for (int i = 0; i < ss.length(); i++) {
if (! (ss.charAt(i) >= '0' && ss.charAt(i) <= '9')) {
System.out.println("请输入合理的整数");
//break;
main(args);
}
}
n=Integer.parseInt(ss);
// System.out.println(n);
s(n);
}
public static void s(int n) throws IOException
{
int count=0;
int sum=0;
int[] m =new int[100];
for(int i=1;i<n;i++)
{
if(i%7==0)
{
count++;
// System.out.println(i);
m[count-1]=i;
}
}
System.out.println("符合条件的总个数为:"+count+"分别是:");
for(int i=0;i<count;i++)
{
System.out.println(m[i]);
sum+=m[i];
}
double sum2=sum;
System.out.println("他们的总和为:"+sum);
System.out.println("他们的平均数为:"+sum2/count);
System.out.println("其中最小值为:"+m[0]);
System.out.println("其中最大值为:"+m[count-1]);