JAVA 基础知识 -- 小白入门必看
Java
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程,本文包含一些Java基础知识,以便刚开始想学JAVA的朋友更容易上手
字面量
数据在程序中的书写格式 如:整数,小数,布尔值,字符,字符串,空值
变量
- 变量格式:数据类型 变量名称=初始值
- 变量作用:存储数据,且数据可改变
定义变量注意事项
- 不能定义不数据类型不同的数据
- 同一范围内不能定义两个相同的变量
- 定义时可以没初始值,使用时一定要赋值
数据类型分类
- 引用数据类型 Sting (判断字符串相等:equals)
- 基本数据类型
- 整数:byte,short, int(默认), long
- 浮点数:float,double(默认)
- 字符:char
- 布尔:boolean只有(true,false)
关键字
- 关键字Java自己保留的一些单词 如(public,class,main)
- 关键字不能做类名或变量名
标识符(由一些字母符号组成)
- 基本要求:数字,字母,下划线,美元($)符号
- 强制要求:不能以数字开头,不能是关键字,区分大小写
- 驼峰命名法:第一个单词首字母小写,第二个单词首字母大写(userName)
数据类型转换
类型范围小的变量可以赋值给类型范围大的变量
byte,short,int,long,float,double
表达式类型转换
类型范围小的表达式类型会自动转换为类型范围大的
表达式最终类型由表达式中最高类型决定
注意:byte,short,char直接转成int类型进行运算
强制转换:
类型大的数据或者变量不能复制给类型范围小的变量。
可以强制将类型范围大的数据或变量转换为类型范围小的。
注意
可能出现数据丢失。
小数转换成整数只会保留小数点前的整数。
算术运算符
运算符 | 说明 |
---|---|
+ | 加法,连接符(拼接) |
- | 减法 |
* | 乘法 |
/ | 除法(商数) |
% | 取余数(模) |
++ | 自加 |
– | 自减 |
注意:在运算中,自加(++)自减(–)在数字前,先自加/自减,再运算,在数字后,先运算,再自加/自减
赋值运算符(隐含强制转换)
运算符 | 说明 |
---|---|
= | 把左边的值赋值给右边 |
+= | 左右两边相加 |
-= | 左右两边相减 |
*= | 左右两边相乘 |
/= | 左的值除以右的值 |
%= | 把左边的值模以右边的值的结果 |
比较运算符, 结果是一个布尔值
运算符 | 描述 | 写法 | 返回值 |
---|---|---|---|
== | 等于 | 7==8 | false |
!= | 不等于 | ||
!== | 恒不等于 | ||
> | 大于 | ||
< | 小于 | ||
>= | 大于或等于 | ||
<= | 小于或等于 |
逻辑运算符
运算符 | 描述 |
---|---|
& | 与:遇false则false |
| | 或:遇true则true |
! | 非:取反 |
^ | 结果一样为true,不一样为false |
短路逻辑运算符
运算符 | 描述 |
---|---|
&& | 左边为false,右边不执行 |
|| | 左边为true,右边不执行 |
三元运算符
判断条件?真的值:假的值
优先级:
Java流程控制语句
1、顺序结构:程序自上而下输出(Java默认结构)
2、分支结构
IF分支:根据判定的结果(真或假),来决定执行那一条语句。
三种格式:
格式一:
if(条件表达式){
语句体;
}
格式二:
if(条件表达式){
语句体1;
}else{
语句体2;
}
格式三:
if (条件表达式1) {
语句1;
}
else if(条件表达式2) {
语句体2;
}
else {
语句体3;
}
switch分支:匹配条件去执行分支,适合做值匹配的分支选择,结构清晰,格式良好
格式:
switch(表达式){
case 值1:
执行体1;
break;
case 值二:
执行体2;
break;
……
default:
执行体3;
break;(可选,建议写上)
}
注意:
- 表达式类型只能是byte,short,int,char,枚举,string;不支持double,float,long。
- case输出的值不允许重复,且只能是字面量,不能是变量
- 不要忘记写break,否则会出现穿透现象;
3、循环结构
循环:控制一段代码反复执行很多次。
while:
当指定的条件为true时循环执行代码码,条件也支持非boolean类型的条件
语法:
while(循环条件){
循环体语句;
迭代语句;
}
示例
int i=0;
while(i<3){
system.out.println("hello word")
i++
}
do-while:
最少会执行1次
语法:
初始化语句;
do {
循环体语句;
迭代语句;
}while(循环条件)
示例
int i=0;
do {
system.out.println("hello word")
i++
}while(i<3);
for语句:
指定循环次数
语法
for(初始化语句;循环条件;迭代语句){
需要执行的代码块;(重复执行的代码)
}
循环语法 | 对比 |
---|---|
for | for的变量的声明在语句里面,用for循环的语句,循环的次数是指定的 |
while | 如果循环的次数不确定的情况下,就使用while语句 |
do while | 不管条件是否满足,都会至少执行一次 |
嵌套循环:
特点:外部循环每循环一次,内部循环全部执行完。
示例:
for(int i=0;i<=3;i++){
for(int j=0;j<5;j++){
system.out.print(*);
}
system.out.println();
}
跳转关键字:
break:直接跳出,不再执行
continue:跳出本次循环,不影响整体循环
数组
定义:数组就是用来存储一批同种类型数据的内存区域
静态初始化数组
定义的时候直接给数组赋值
格式:数据类型[ ]数组名=new 数据类型[]{元素1,元素2,…,元素n};
简化格式:数据类型[ ]数组名={{元素1,元素2,…,元素n};
数组变量名中存储数组在内存中的地址信息,数组是引用类型
静态初始化数组-数组访问
数组的访问:数组名称[索引]
数组的长度属性:数组名称.length
动态初始化数组
只确定元素的类型和数组的长度,之后再存入具体数据
格式:数据类型[ ]数组名= new 数据类型[长度]
动态初始化数组-总结
两种数组定义时的特点和场景有什么区别?
1,当前已经知道存入的元素值,用静态初始化。
2,当前还不清楚要存入哪些数据,用动态初始化。
元素默认规则
数据类型 | 明细 | 默认值 |
---|---|---|
基本数据类型 | byte,short,char,int,long | 0 |
float,double | 0.0 | |
boolean | false | |
引用类型 | 类,接口,数组,String | null |
数组遍历
遍历:就是一个一个数据的访问
搜索,数据统计等等都需要用到遍历
数组遍历-数组元素求和
如何实现批量数据的求和?
1,使用数组存储批量数据
2,遍历数组中的每个数据,然后定义变量把他们累加起来
数组遍历-数组求最值
①数据拿到程序中去,用数组装起来。
②定义一个变量用于记录最大值,这个变量建议默认存储第一个元素值作为参照。
③遍历数组的元素,如果该元素大于变量存储的元素,则替换变量存储的值为该元素。
④循环结束后输出最大值变量即可。
int [] a={50,60,20,-30,40,50};
int max=a[0];
for (int b=1;b<a.length;b++){
if (max<a[b]){
max=a[b];
}
}
System.out.println(max);
简介
方法是一种语法结构,它可以把一段代码封装成一个功能,以方便重复调用
特点:
提高了代码的复用性
让程序的逻辑更清晰
格式:
修饰符 返回值类型 方法名(形参列表){
方法体代码(需要执行的功能代码)
return 返回值;
}
方法的常用问题
方法的编写顺序无所谓
方法与方法之间是平级关系,不能嵌套定义
基本类型数据传递
Java的参数传递机制:值传递
在传输实参给方法的形参的时候,并不是传输实参变量本身, 而是传输实参变量中存储的值,这就是值传递。
基本类型的参数传输存储的数据值。
引用类型数据类型
引用类型的参数传输存储的地址值。
基本类型和引用类型的参数在传递的时候有什么不同
都是值传递。
基本类型的参数传输存储的数据值。
引用类型的参数传输存储的地址值。
方法重载
定义:同一个类中,出现多个方法名称相同,但是形参列表是不同的,那么这些方法是重载方法
作用:可读性好,方法名称相同提示是同一类型的功能,通过形参不同实现功能差异化的选择,这是一种专业的代码设计。
方法重载的识别技巧
1,只要是同一个类中,方法名称相同、形参列表不同,那么他们就是重载的方法,其他都不管!(如:修饰符,返回值类型都无所谓)
2,形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。
return关键字单独使用
return; —> 可以立即跳出并结束当前方法的执行; return关键字单独使用可以放在任何方法中
如果要直接结束当前方法的执行,怎么解决?
return; 跳出并立即结束所在方法的执行。
break; 跳出并结束当前所在循环的执行。
continue; 结束当前所在循环的当次继续,进入下一次执行。
- 点赞
- 收藏
- 关注作者
评论(0)