java学习笔记

Posted z1427094386

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习笔记相关的知识,希望对你有一定的参考价值。

java笔记

一、认识java语言

1、Java平台-Java语言特性

  1. Java是众多高级语言中的一种,由SUN公司开发
  2. Java是面向对象的编程语言,也是一个平台
  3. Java技术基于Java虚拟机(JVM)
  4. Java语言特点:

Java语言特点:

  • 平台无关
  • 简单
  • 面向对象
  • 可移植性
  • 健壮性
  • 安全性
  • 多线程

2、DOS命令指示符使用

命令功能说明
dir显示指定路径下磁盘目录DIR [盘符:][路径][文件名][参数]
cd进入指定目录cd只能进入当前盘符下目录,cd…返回上级目录
md创建目录可以通过\\创建多及目录:md 一级目录\\二级目录
rd删除子目录只能删除当前路径下的空目录
copy拷贝文件COPY [源目录或文件][目的目录或文件]
del删除文件只能删除指定目录下的文件
cls清空屏幕清空命令窗口的内容
exit退出命令窗口关闭命令窗口

3、Java集成开发环境

  1. 文本编辑器: UltraEdit,Notepad++等
  2. Web开发工具: Hbuilder,Sublime等
  3. 集成开发工具: IntelliJ IDEA,Eclipse等

4、Java程序结构组成-类

程序以类的方式组织,放在.java文件中

public class Hello
public class Student
//class:用于定义一个类
//public:代表这个类是公有的
//源文件名与类名一致

5、Java程序结构组成-方法

  1. 方法就是这个类能做的事
  2. main方法为主方法,是程序的入口 main+alt+/ 快捷方式
public static void main(String[] args)

6、Java程序结构组成-语句

  1. 语句是方法做事的体现
  2. 语句以分号结尾
  3. 真正跑程序 syso+alt+/ 打印输出
System.out.println("Hello,world! ") ;

7、Java程序结构组成-注释

  • 注释向阅读人员提供说明信息,增强程序可读性
  • 注释不会执行

单行注释

  • 单行注释:快捷键Ctrl+/ 再次按撤销注释
  • 一般用来注释局部变量。
//这是单行注释
int a = 5;
a = a + 6;

多行注释

  • 多行注释:Ctrl+Shift+/ 撤销Ctrl+Shift+\\
  • 可用来注释文件头、算法实现、方法中的复杂代码块、修改记录
/*
这个是多行注释,此区域全部都不会被编译
int a = 5;
a = a + 6;
*/
int j = 0;
j++;
System.out.println(j);

文档注释

  • 文档注释:Shift+Alt+J
  • 可用来注释类、接口、静态方法、成员方法、静态变量、成员变量、常量
  • 或者在定义完:注释类、接口、静态方法、成员方法、静态变量、成员变量、常量后,在上面加上/**在按Enter建也能生成
/**
 * 这个是文档注释,此处描述此类的作用及其他信息
 */
public class Hello
	public static void main(String[] args)
		System.out.println("HelloWord!");
	

8、命名规范

二、运算符与表达式

1、算术运算符

算术运算符名称举例
+加法5+12=17
-减法25-10=15
*乘法5*5=25
/除法25/5=5
%求余24%7=3
++自增int i=5 ; i++
自减int i=5 ; i–

其中四个运算符是需要我们特别注意的

  1. / 除法运算符:此运算符我们需要考虑数据类型的问题
5 / 2 = ? ;

在我们以前的数学运算中它的结果是:2.5
而在我们Java中要考虑除数和被除数的数据类型的问题,5、2默认都是整型的,所以结果也必须是整型的,可是结果计算出来是2.5,那程序就在这个结果中取整数部分所以最终的结果为2

  1. % 取余也叫取模运算符,我觉得叫取余数更好理解,顾名思义就是两个数做除法,求最终剩下几
5 % 2 = ?;

对2求余,商2 余1所以最后的结果就是1

  1. ++ 自增运算符
i++;
//此句话我们对它进行一下翻译
i = i + 1;

在原有的基础上做+1的操作,在使用++符号一定注意一个问题 i++ 和 ++i 的区别,i++先使用i完成其他运算再自增,++i先自增再参加其他运算

  • –- 自减运算符,同上
  • +±-运算符的用法
++:自加。对原有的数据进行+1 ; --:自减。对原有数据进行-1
放在操作数的前面和后面效果一样
注:放在操作数的前面,先自增或者自减,然后再参与运算; 放在操作数的后面,先参与运算,再自增或者自减。

注:

  • 整数相除只能得到整数,如果想得到小数,就要使用浮点数(float、double);
  • /是获得除法的商;%获取的是除法操作的余数(4%5=8),运算结果的符号取决于参与运算的左边的符号。

2、赋值运算符

算术运算符名称举例
=赋值c=a+b 将a+b得到的值赋值给c
+=加等于c+=a等价于c=c+a
-=减等于c-=a等价于c=c-a
*=乘等于c*=a等价于c=c*a
/=除等于c/=a等价于c=c/a
%=模等于c%=a等价于c=c%a
  • 赋值运算符中最熟悉也是最不熟悉的就是=,大部分人认为这不就是等号吗?其实它在java中我们称之为赋值符号
//1. 赋值符号 =
i = i + 1;

//2. += 这是一个缩写的形式
i+=1;
//等同于
i = i + 1; 
/

赋值运算符的注意事项

注意事项
基本的赋值运算符=:把=右边的数据赋值给左边。
扩展的赋值运算符+=,-=,*=,/=,%=:把左边和右边做加法,然后赋值给左边。
赋值运算符要求左边的数据必须是一个变量

3、关系运算符

判断两个操作之间的关系,结果是一个boolean的结果(只会是ture or false)
这里边我们看一个之前不太常见的==,这个才是我们之前一直脑子里的等号

int a = 5;
int b = 6;
if(a > b)
	System.out.println("a 比 b大");

if(a == b)
	System.out.println("a 和 b一样大");

if(a != b)
	System.out.println("a 和 b不一样大");

符号说明
==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,不成立为false

关系运算符的注意事项

注意事项
无论你的操作是简单还是复杂,结果是boolean类型
“==“不能写成”=”

4、逻辑运算符

对两个布尔类型的操作数进行操作,其结果也是boolean

运算符用法含义说明实例结果
&&a&&b短路与ab 全为 true 时,计算结果为 true,否则为 false。2>1&&3<4true
||ab短路或ab 全为 false 时,计算结果为 false,否则为 true。。2<1||3>4false
!!a逻辑非a 为 true 时,值为 false,a 为 false 时,值为 true!(2>4)true
|ab逻辑或ab 全为 false 时,计算结果为 false,否则为 true1>2|3>5false
&a&b逻辑与ab 全为 false 时,计算结果为 false,否则为 true1<2&3<5true
  • && 与 & 区别:如果 a 为 false,则不计算 b(因为不论 b 为何值,结果都为 false)
  • || 与 | 区别:如果 a 为 true,则不计算 b(因为不论 b 为何值,结果都为 true)
    逻辑运算符的注意事项
注意事项
逻辑运算符一般用于连接boolean类型的表达式或者值
在Java中我们要表示一个数大于3并且小于6 ,不可以写成3<x<6,应该写成 x>3 & x<6
&逻辑与:有false则false
逻辑或:有true则true
逻辑与或:相同为false,不同为true   举例:情侣关系:男男,男女,女男,女女
逻辑非:非false则true,非true则false  特点:偶数个不改变本身。

逻辑运算符&&和&的区别

&&(短路与)与 &(与)的区别
最终结果一样
&&具有短路效果,左边是false,右边不执行

逻辑运算符||和|的区别

||(短路或) |(或)的区别
最终结果一样
||具有短路效果,左边是true,右边不执行

5、条件运算符

条件运算符也称之为三目运算符,也是以后我们会常用的一种运算符
Test?语句块1:语句块2;

  • Test是boolean结果的表达式
  • 结果为true时执行语句块1
  • 结果为false时执行语句块2
//需求:比较a b两个数的大小,将大的数存入c中
int a = 5;
int b = 6;
int c = 0;
c = a>b?a:b;
//此时c中存储的就是最大的值也就是6
System.out.println(c);

6、Java中运算符的优先级

1的级别最高,11的级别最低

优先级运算符
1()
2!; +(正) ;-(负); ++; –
3* ;/ ; %
4+(加); -(减)
5< ; <= ; >; >=
6== !=
7^
8&&
9||
10?:
11= ; += ;-=;*=;/=;%=

补充

1、位运算符的种类

~(按位取反)<<(左移)&(与)(或)>>(右移)^(异或)>>>(无符号右移)

注意事项:位运算是直接对二进制补码进行运算。

2、&、|、^、~ 的用法

用法
&:有0则0
^:相同则0,不同则1
~:按位取反 0变1 1变0
:有1则1

位异或运算符^的特点:一个数据被另一个数据位异或两次,该数本身不变。

3、<<、>>、>>> 的用法

用法用法
<<:左移空位补0,被移除的高位丢弃
>>:右移被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1。
>>>:无符号右移被移位二进制最高位无论是0或者是1,空缺位都用0补。

注:

  • << : 把<<左边的数据乘以2的移动次幂 例如 10<<3 结果 10*2^3=80
  • >> : 把>>左边的数据除以2的移动次幂 例如 40>>3 结果 40/2^3=5

4、三目运算符与格式

格式
(关系表达式) ? 表达式1 : 表达式2
如:int a=(10>20)?30:50; a=50
流程
计算关系表达式的值,如果为true, 运算后的结果是表达式1; 如果为false,运算后的结果是表达式2;

三、分支结构

1、if分支结构

  1. 单if分支结构
int a =6;
if(a>10)
	Syste.out.println("a 大于 10");

  1. if-else分支结构
int a =6;
if(a>10)
	Syste.out.println("a 大于 10");
else
	Syste.out.println("a 不大于 10");

  • 多重if-else分支结构
int a =6;
if(a>10)
	Syste.out.println("a 大于 10");
else if(a == 10)
	Syste.out.println("a 等于 10");
else
	Syste.out.println("a 小于 10");

2、switch分支结构


案例
令狐冲参加比武大会

  • 如果获得第一名,将出任武林盟主
  • 如果获得第二名,将出任武当掌门
  • 如果获得第三名,将出任峨嵋掌门
  • 否则,将被逐出师门
    使用switch代码实现如下:
int mingCi = 1;
	switch (mingCi)
        case 1:
            System.out.println("出任武林盟主");
            break;
        case 2:
            System.out.println("出任武当掌门");
            break;
        case 3:
            System.out.println("出任峨嵋掌门");
            break;
        default:
            System.out.println("被逐出师门");

3、两个关键字的使用[break continue]

break 跳出当前循环或者代码段
continue 跳过本次循环,继续下次循环

//使用break --> 1-10中只要遇到有偶数就停止
int i = 1;
for(;i<11;i++)
	if(i%2==0)
		break;
	

System.out.println(i+"是偶数!");

//使用continue --> 查找1-10之间所有的偶数和
int i = 1;
int total = 0;
for(;i<11;i++)
	if(i%2!=0)
		continue;
	
	total+=i;

System.out.println("所有的偶数和为:"+total);

四、循环结构

1、while循环

while 循环只最基本也是最简单的一种循环结构:
语法:

while(布尔型表达式)  
	//循环体  

此处的布尔表达式可以理解为:一个只要结果为布尔值的任何内容

int i = 5;
while(i<4)
	//循环体
	System.out.println("这句话不会执行的");

2、do…while循环

对于 while 语句而言,如果不满足条件,则不能进入循环。
但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和 while 循环相似,不同的是 do…while 循环至少会执行一次
语法:

do
	//循环体
while(布尔表达式);

do…while 循环先进行一次循环体的执行,然后才会进行布尔表达式的判断,如果结果为 true 则继续下一次循环,
如果为false则直接退出循环

int i = 5;
//while 循环
while(i<4)
	//循环体
	System.out.println("这句话不会执行的");


//do while循环
do
	//循环体
	System.out.println("不管下边条件真不真,我肯定会执行一次的!");

while(i<4);
int i = 5;
//while 循环
while(i<4)
	//循环体
	System.out.println("这句话不会执行的");


//do while循环
do
	//循环体
	System.out.

3、for循环

for 循环是使用率最高的一种循环,语法相对 while 循环稍微复杂一点

for(初始化循环参数;循环条件;更新循环变量)
	//循环体


  1. 初始化循环参数
    这是第一步参数: int i = 0;
  2. 循环条件
    初始化参数之后需要判断此条件是否为 true ,如果为 true则执行下一步,如果为 false 则退出循环
  3. 循环体
    这是循环体 执行完执行下一步
  4. 更新循环变量
    待循环体执行完毕,要对循环变量进行更新,一般为自增或者自减:i++ or i–,之后进入第二步进行条件判断
for(int i = 0;i<10;i++)
	System.out.println("我要被输出10遍");

4、foreach循环

这个循环是for循环的一种升级用法,一般针对数组和集合使用,简化普通for循环

String[] str = "你","好","啊","!";
for(String s : str)
	System.out.println(s);

其中 s 代表数组 str 中的每一个被循环到的内容,这种写法比之前的for更加的简介,

5、两个关键字的使用[break continue]

break 跳出当前循环或者代码段
continue 跳过本次循环,继续下次循环

//使用break --> 1-10中只要遇到有偶数就停止
int i = 1;
for(;i<11;i++)
	if(i%2==0)
		break;
	

System.out.println(i+"是偶数!");

//使用continue --> 查找1-10之间所有的偶数和
int i = 1;
int total = 0;
for(;i<11;i++)
	if(i%2!=0)
		continue;
	
	total+=i;

System.out.println("所有的偶数和为:"+total);

五、数组

数组也是一种变量,它可以存储一组固定长度、相同数据类型的数据

一、一维数组

1、什么是数组?

数组对象是使用单独的变量名来存储一系列的值。
数组可以用一个变量名存储所有的值,并且可以用变量名访问任何一个值。
一组数据 :相同数据类型的时候 而且数据还比较多的 时候 存放一组数据

2、数组的使用

第一步:声明一个数组 ;
第二步:向数组里面写入数据: 2种写法 静态和动态

2.1、静态初始化:简单
double [] score4 = ;           要求必须一行写完 
2.2、动态初始化:第一步:声明一个数组 两种写法

第二步:创建内存空间 new

  1. 这里的数值是固定的
int[] score1 =new int[6];
		score1 [1]=10;
		score1 [2]=20;
		score1 [3]=30;
		score1 [4]=40;
		score1 [5]=50;
  1. 用Scanner自己输入数值 这里的数值不是固定的
 int [] score1 = new int[5]; 
 Scanner sc = new Scanner(System.in) ;
		for (int i = 0; i <= 4 ; i++)  //循环i表示的是 数组的下标 从0开始的   0 1 2 3 4
			System.out.println("请输入第"+(i+1)+"位同学的成绩");
			int score = sc.nextInt();
			score1[i] = score;

第三步:怎么使用:需要将数组中 的下标指定元素 从0开始 递增 0 1 2 3 4
到底放没放进去 打印输出 遍历数组

	for (int i = 0; i <= 4; i++) 
			System.out.println(score1[i]);
   

3、实际应用

3.1、静态声明,并拿值
//声明一个int类型的数组
		int [] a=10,20,30,40,50;
		//拿值时 索引下标从0开始计算
		//	System.out.println(a[3]);
		for (int i = 0; i < a.length; i++) 
			System.out.println(a[i]);
		
3.2、动态声明,并拿值
//动态初始化
		int [] shuzu=new int[5];
		Scanner sc=new Scanner(System.in);
		for (int i = 0; i <=4; i++) //循环i表示的是 数组的下标 从0开始的   0 1 2 3 4
			System.out.println("请输入第"+(i+1)+"位同学的成绩");
			int a=sc.nextInt();
			shuzu[i]=a;
		
		//到底数组里面有没有数 打印输出  遍历数组
		for (int i = 0; i < shuzu.length; i++) 
			System.out.println(shuzu[i]);
		

4、求最值

4.1、求最大值
  求一组数据中的最大值    3 5 7 9 12 15 1 3 4 一次只能比较2个数 

打擂台的思维: 首先先假设1号是最大值 然后 让1和轮流和后面的值进行比较 ,如果出现一个数比1号还大 那么就让最大值 设定这个数

 //静态初始化 
		int[] a=15以上是关于java学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记15

Java学习笔记2.5.1 循环结构 - 条件循环

Java学习笔记之:Java流程控制

Java 第五章 循环结构学习笔记

JAVA学习笔记-循环结构

java学习笔记:for循环