java语言基础
一、标识符
1、标识符就是用于给程序中变量、类、方法命名的符号。
2、必须以字母、下划线(_)、美元符($)开头数字不可以后面可以为任意数目的字母、数字、下划线和美元符
3、标识符不能是Java关键字和保留字,但可以包含关键字和
保留字。
此外有应注意:
1.标识符不能包含空格。
2.字母除了26个英文大小写字母外,也可以是中文
3.Java语言中标识符区分大小写,abc与Abc是不同的
二、关键字
◆Java语言中有一些具有特殊用途的单词被称为关键字。
◆所有关键字都是小写。
◆Java语言中一共有50个关键字。
◆当定义标识符时,不能让标识符和关键字相同
三、变量命名法
1.驼峰命名法
是指混合使用大小写字母来构成变量和函数的名字。第一个
单词以小写字母开始;第二个单词的首字母大写或每一个单
词的首字母都采用大写字母。
例如: myfirstname、 mylastname
2.帕斯卡命名法
每一个单字的首字母都采用大写字母的命名格式
例如: Firstname、 Lastname
3.匈牙利命名法
基本原则是:变量名=属性+类型+对象描述,其中每一对象的
名称都要求有明确含义,可以取对象名字全称或名字的一部分。
例如:nNum(数据类型为int
![]()
四、数据类型
基本数据类型保存在栈内存
引用数据类型保存在堆内存
基本数据类型大小
五、变量使用规则
◆使用变量也分为三步:
1.声明变量,根据数据类型大小申请对应内存空间
◆格式:变量类型 变量名;
String name;
2.赋值,即将数据存储到对应的内存空间中
◆格式:变量名=数值;
name="张三";
1和2可以合并
◆格式:变量类型变量名=数值:
string name="张三”;
◆3.使用变量,即从内存中取出数据,操作数据
System.out. println("姓名:"+name);
六、数据类型的转换
1、自动转换类型
◆在Java程序中,不同的基本数据类型的数据之间经常需要进
行相互转换。
例如:
int scorel = 100 //n为整型
double score2= score1; // score1自动转换为 double
System, out. println(score2);
◆代码中int型变量 score1可以直接为 double型变量 score2完
成赋值操作,运行结果为:100.0
◆这种转换称为自动类型转换。其完成自动类型转换的条件为:
◆1.目标类型能与源类型兼容,如 double型兼容int型,但是
char型不能兼容int型
◆2.目标类型大于源类型,如 double类型长度为8字节,int
类型为4字节,因此 double类型的变量里直接可以存放int类型
的数,但反过来就不可以了
2、强制类型转换
◆以下代码中不能完成自动类型转换
int age 20; char sex =5;
char result=age+sex;//int类型不能自动转换为char类型
double avg 78.8;
int avg2=avg1;// double类型不能自动转换为int类型
◆我们任性就想霸王硬上弓,怎么办?
◆答:强制类型转换
◆格式:(数据类型)数值
int age = 20;
char seX='男';
char result =(char)age + sex;
double avg =78.8;
int avg2 =(int)avg1;
注意:强制类型转换可能会造成数据的丢失
例如:int类型转换为string类型
int i = 100
string m = i + ""
七、常量
◆所谓常量,我们可以理解为是一种特殊的变量,它的值
被设定后,在程序运行过程中不允许改变。
格式: final常量名=值;
final double PI 3.14;
final String LOVE ="15PB
final int MAX_ SIZE 100;
注意:程序中使用常量可以提高代码的可维护性。
常量名一般使用大写字符
八、控制台数据的输入-scanner使用
◆使用 Scanner:也分为三步
◆1.导入 Scanner类
import java.util.Scanner;
◆2.定义一个 Scanner类型的变量
Scanner input = new Scanner(System.in);
◆3.获取键盘输入的数据
String bookname = input. next();
int nId = input.nextInt();
九、表达式与运算符
◆程序是由许多语句组成的,语句的基本单位是表达式。
int n = n*(1+0.04);
◆表达式是由操作数和运算符组成。
运算符分为以下几类:
1.算术运算符 +
2.赋值运算符 =
3.比较运算符 ==
4.逻辑运算符 &
5.条件运算符 ?:
◆算术运算符主要用于进行基本的算术运算,如加法、戒法、
乘法、除法等。
例:
◆小明期末考试考了4门,对自己的分数还算满意,想求总分和平均分,我们来帮帮他吧
◆语文:85.5
◆数学:98.8
◆英语:67.5
◆自然:75.5
代码:
double chinese =85.5;
double math = 98.8;
double english = 67.5;
double nature = 75.5;
double sum = chinese+math+english+nature;
double avg = sum/4;
System.out.println("小明的总分为:"+sum+"平均分为"+avg);
◆赋值运算符是指为变量或常量指定数值的符号。如可以使
用"="将右边的表达式结果赋给左边的操作数
例:
◆有两个数m=6,n=8,使用变量和赋值运算符将两数进行交换。
◆输出结果为:m=8n=6
代码:
int m=6;
int n=8;
System.out. println("m="+ m+ "n="+ n);
◆比较运算符用于判断两个数据的大小,例如:大于、等于
不等于。比较的结果是一个布尔值(true或 false)。
注意:
判断字符串是否相等,不能使用==,使用equals()函数
◆逻辑运算符主要用于进行逻辑运算。
◆条件运算符(?:)也称为“三元运算符”。
◆语法格式:布尔表达式?表达式1:表达式2
◆运算过程:
◆如果布尔表达式的值为true,则返回表达式1的值,否则返
回表达式2的值
String str=(5>6)?"5大于6”:"5不大于6";
System. out. println(str);
◆位运算符是对二进制数的每一位进行运算的符号,它是专门
针对数字0和1进行操作的。
十、运算符的优先级
十一、if语句
例如:
十二、if-else语句
例:
十三、多重if-else语句
十四、嵌套if-else语句
◆嵌套if语句,只有当外层f的条件成立时,才会判断内
层f的条件。例如,活动计划的安排,如果今天是工作日,
则去上班,如果今天是周末,则外出游玩;同时,如果周未天
气晴朗,则去室外游乐场游玩,否则去室内游乐场游玩。语法
例如:
◆小奇去参加游泳比赛,预赛成绩大于80分的可进入决赛,
然后根据性别再划分为男子组决赛和女子组决赛。
设小奇的预算分数为90,性别为男
运行输出结果:恭喜,顺利进入男子组决赛
int score = 91;
String sex = "男";
if(score>90){
if(sex.equals("男")){
System.out.println("恭喜,顺利进入男子组决赛!");
}else{
System.out.println("恭喜,利进入女子组决赛!");
}
}else{
System.out.println("谢谢参与,还需要再接再厉!");
}
例如:
◆设置属于你的菜谱:如果今天是星期一、三、五,则早餐吃
包子,如果是星期二、四、六,则早餐吃油条,如果是星期日,
则吃“肯德基套餐”
十五、switch-case语句
◆当需要对选项进行等值判断时,使用 switch-case语句更
加简洁明了。
◆例如年终大会抽奖,3等奖为ipad,2等奖为 i phone6,1等奖
为 macbook pro,安慰奖为移动硬盘。
例如:
◆设置属于你的菜谱:如果今天是星期一、三、五,则早餐吃
包子,如果是星期二、四、六,则早餐吃油条,如果是星期日,
则吃“肯德基套餐”
int week = 1;
switch(week){
case 1:
case 3:
case 5:
System.out.println("吃包子");
break;
case 4:
case 6:
System.out.println("吃油条");
break;
case 7:
System.out.println("吃肯德基");
}
十六、循环语句
◆Java语言中常用的3种循环语句: while,do- while,for
1、 循环语句精简代码,重用代码
2、 循环语句可读性好,可维护性好
while语句
◆执行流程:
◆1.判断 while后面的条件是否成立(真/假)
◆2.当条件成立时,执行循环内的代码,然后重复执行1,2直到循环不成立。
例如:
◆杨老师准备好了考试卷纸,要打印50份,请用循环实现它
◆分析步骤:
1.确定循环的判断条件以及循环操作。50份 打印试卷
◆2.套用 whi let语法写出代码
int count = 0;
while(count<=50){
System.out.println("打印试卷");
}
◆3.检车循环是否能够退出
int count = 0;
while(count<=50){
System.out.println("打印试卷");
count++;
}
do-while语句
◆执行流程:
◆1.判断 while后面的条件是否成立(真/假)
◆2.当条件成立时,执行循环内的代码,然后重复执行1,2直到循环不成立。
例如:
◆计算50以内(包括50)的偶数之和
◆分析步骤
◆1.确定循环的判断条件以及循环操作。
判断条件:小于等于50
循环操作:偶数累加
◆2.套用do- while语法写出代码
int num = 1;
int sum = 0;
do{
if(num%2==0){
sum= sum+num;
}
}while(num<=50);
System.out.println(sum);
◆3.检查循环是否能够退出
int num = 1;
int sum = 0;
do{
if(num%2==0){
sum= sum+num;
}
num++;
}while(num<=50);
System.out.println(sum);
for循环
例如:
◆计算1到100之间不能被3整除的数之和
◆分析步骤
◆1.确定循环的判断条件以及循环操作。
判断条件:小于等于100
循环操作:100以内,被3整除的数累加
◆2.套用for语句语法写出代码
int sum = 0;
for(int num = 1;num<=100;num++){
if(num%3 != 0){
sum = sum + num;
}
}
System.out.println(sum);
◆3.检查循环是否能够退出
注意:
◆1.for关键字后面括号中的三个表达式必须用“;”隔开,三个表达式都可以省略,但“;”不能省略。
a.省略“循环变量初始化”,可以在for语句之前由赋
值语句进行变量初始化操作,如:
b.省略“循环条件”,可能会造成循环将一直执行下去,
也就是我们常说的“死循环”现象,如:
◆在编程过程中要避免“死循环”的出现,因此,对于上面代
码可以在循环体中使用 break强制跳出循环。
c.省略“更新循环变量”,可以在循环体中进行循环变量
的变化,如:
2.for循环变量初始化和更新循环变量部分,可以是使用
“,”同时初始化或改变多个循环变量的值,如
3.循环条件部分可以使用逻辑运算符组合的表达式,表示复
杂判断条件,但一定注意运算的优先级,如:
十七、数组
◆数组是一组相同数据类型变量的集合
◆数组中的元素在内存中是连续存储的
◆数组下标是从0开始的
◆数组的作用
1.存储相同数据类型的一组数据
2.对同类型数据集中存储、管理、便于遍历
◆数组的特点
1.数组本身是一种引用类型
2.数组名只是引用,指向堆中创建的数组对象
◆使用数组四步走
◆1.声明数组
int scores[ ];
int[ ] scores;
◆声明数组:告诉计算机数据类型是什么
◆格式:数据类型数组名称门
int scores[];
数据类型[ ]数组名称;
int[ ] scores;
String[ ]names;
◆注意:声明数组时,不需要设置数组长度
◆2.分配空间
int scores[ ] =new int[10];
◆分配空间:告诉计算机分配几个连续的空间
◆格式:数据类型 数组名称门=new 数据类型[数组长度];
int scores[ ]= new int[10];
string[ ] names = new String[10];
◆注意:数组元素根据类型不同,有不同的初始值
int类型,默认初始值为0
String类型,默认初始值为null
double类型,默认初始值为0.0
◆3.赋值
scores[1]=100;
◆赋值:向分配的盒子里放入数据
方法一:先声明,再赋值(手动录入或者动态从键盘录入) 方法二:声明并赋值
◆4.处理数组中数据
system. out.. println(" scores数组第二个元素的值为:"+score[1]);
◆对数据进行处理:访问数组元素,修改数组元素
1.访问数组元素,计算数组元素的总和
int scores[] = {88,77,66,89,180};
int sum = 0;
for(int i=0;i<scores.length;i++){
sum+= scores[i];
}
System.out.println("数组元素总和为:"+sum);
2.修改数组元素,对数组元素不足60的修改为60
int scores[] = {88,44,66,89,180};
int sum = 0;
for(int i=0;i<scores.length;i++){
if(scores[i]<60){
scores[i] = 60;
}
}
System.out.println("数组元素总和为:"+scores[1]);
数组遍历
方法一,使用for循环
int scores[] = {88,44,66,89,180};
for(int i=0;i<scores.length;i++){
System.out.println(scores[i]);
}
方法二,使用foreach循环
格式:
int scores[] = {88,44,66,89,180};
for(int score:scores){
System.out.println(score);
}
数组元素的查找
◆已知一个数组int[]nums={32,46,54.68,75,86,88,92,98},
请查找数组中有无86这个数,有则输出数组下标。
int nums[] = {32,46,54,68,75,86,8,92,98};
int index = -1;
for(int i=0;i<nums.length;i++){
if (86 == nums[i]){
index = i;
}
}
if(index!=-1){
System.out.println("找到了,下标为:"+index);
}
数组元素的排序
◆ Arrays类是Java中提供的一个工具类,在java.util包
中。该类中包含了一些方法用来直接操作数组,比如可直接实
现数组的排序、搜索等。
语法:Array.sort(数组名);//(按升序排列)
◆已知一个数组int[]nums={32,68,54,46,88,86,75,92,98},
从小到大将其排序
int num[]={32,68,54,46,88,86,75,92,98};
int i =0;
Arrays.sort(num);
for(;i<num.length;i++){
System.out.println(num[i]);
}
二维数组
◆二维数组可以看成以数组为元素的数组
◆Java中二维数组的声明和初始化应按照从高维到低维的顺序
进行
例如:
int[][]arr1 = new int[10][]; //第一维长度未定
int[][]arr2 = new int[10][20]; //第二维长度确定
◆使用二维数组三步走
1.声明数组并分配空间
2.赋值
二维数组的赋值,和一维数组类似,可以通过下标来逐个
赋值,注意索引从0开始
格式:数组名[行索引] [列索引]=值;
也可以在声明数组的同时为其赋值
int [][]arr1 = new int[][]{{3,2,1},{4,6}};
arr1[0][0] = 6;
3.处理数组
二维数组的访问和输出同一维数组一样,只是多了一个下
标而已。在循环输出时,需要里面再内嵌一个循环,即使用二
重循环来输出二维数组中的每一个元素。如:
int[][]nums={{1,2,3},{4,5,6}};
for(int i=0;i<nums.length;i++){
for(int j=0;j<nums[i].length;j++){
System.out.println(num[i][j]);
}
}
System.out.println();