java学习笔记
Posted z1427094386
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习笔记相关的知识,希望对你有一定的参考价值。
java笔记
一、认识java语言
1、Java平台-Java语言特性
- Java是众多高级语言中的一种,由SUN公司开发
- Java是面向对象的编程语言,也是一个平台
- Java技术基于Java虚拟机(JVM)
- Java语言特点:
Java语言特点:
- 平台无关
- 简单
- 面向对象
- 可移植性
- 健壮性
- 安全性
- 多线程
2、DOS命令指示符使用
命令 | 功能 | 说明 |
---|---|---|
dir | 显示指定路径下磁盘目录 | DIR [盘符:][路径][文件名][参数] |
cd | 进入指定目录 | cd只能进入当前盘符下目录,cd…返回上级目录 |
md | 创建目录 | 可以通过\\创建多及目录:md 一级目录\\二级目录 |
rd | 删除子目录 | 只能删除当前路径下的空目录 |
copy | 拷贝文件 | COPY [源目录或文件][目的目录或文件] |
del | 删除文件 | 只能删除指定目录下的文件 |
cls | 清空屏幕 | 清空命令窗口的内容 |
exit | 退出命令窗口 | 关闭命令窗口 |
3、Java集成开发环境
- 文本编辑器: UltraEdit,Notepad++等
- Web开发工具: Hbuilder,Sublime等
- 集成开发工具: IntelliJ IDEA,Eclipse等
4、Java程序结构组成-类
程序以类的方式组织,放在.java文件中
public class Hello
public class Student
//class:用于定义一个类
//public:代表这个类是公有的
//源文件名与类名一致
5、Java程序结构组成-方法
- 方法就是这个类能做的事
- main方法为主方法,是程序的入口 main+alt+/ 快捷方式
public static void main(String[] args)
6、Java程序结构组成-语句
- 语句是方法做事的体现
- 语句以分号结尾
- 真正跑程序 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– |
其中四个运算符是需要我们特别注意的
- / 除法运算符:此运算符我们需要考虑数据类型的问题
5 / 2 = ? ;
在我们以前的数学运算中它的结果是:2.5
而在我们Java中要考虑除数和被除数的数据类型的问题,5、2默认都是整型的,所以结果也必须是整型的,可是结果计算出来是2.5,那程序就在这个结果中取整数部分所以最终的结果为2
- % 取余也叫取模运算符,我觉得叫取余数更好理解,顾名思义就是两个数做除法,求最终剩下几
5 % 2 = ?;
对2求余,商2 余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<4 | true |
|| | ab | 短路或 | ab 全为 false 时,计算结果为 false,否则为 true。。 | 2<1|| 3>4 | false |
! | !a | 逻辑非 | a 为 true 时,值为 false,a 为 false 时,值为 true | !(2>4) | true |
| | ab | 逻辑或 | ab 全为 false 时,计算结果为 false,否则为 true | 1>2| 3>5 | false |
& | a&b | 逻辑与 | ab 全为 false 时,计算结果为 false,否则为 true | 1<2&3<5 | true |
- && 与 & 区别:如果 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分支结构
- 单if分支结构
int a =6;
if(a>10)
Syste.out.println("a 大于 10");
- 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(初始化循环参数;循环条件;更新循环变量)
//循环体
- 初始化循环参数
这是第一步参数: int i = 0; - 循环条件
初始化参数之后需要判断此条件是否为 true ,如果为 true则执行下一步,如果为 false 则退出循环 - 循环体
这是循环体 执行完执行下一步 - 更新循环变量
待循环体执行完毕,要对循环变量进行更新,一般为自增或者自减: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
- 这里的数值是固定的
int[] score1 =new int[6];
score1 [1]=10;
score1 [2]=20;
score1 [3]=30;
score1 [4]=40;
score1 [5]=50;
- 用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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章