1、注释
平时我们编写代码时,在代码比较少的时候,我们还是可以看懂自己写的代码,但是当代码量突然之间变多了的时候,我们就需要加上注释,以便让我们可以直接看出这段代码的意义。
注释并不会被执行,这是供我们这些开发人员看的。
书写注释是一个很好习惯
java中的注释有三种:
单行注释;多行注释;文档注释。
使用方式见下面代码:
public class HelloWorld {
public static void main(String[] args) {
//输出一个HelloWorld
System.out.println("Hello,World!");
//假如需要注释的内容有很多行的时候就需要使用多行注释
//多行注释的语法是 /* */
/*
* 多行注释
* 多行注释
* 多行注释
* 多行注释
*/
//文档注释是和javaDoc连接使用的,在里面可以添加一些说明 其语法格式如下:
/**
* 在这里面可以写一些对于自己代码的说明
*它比多行注释第一行多了一个*
*/
}
}
2、标识符
程序员指定的名字,例如类名、变量名、方法、接口、枚举等;构成标识符的字母有一定的规范要求,Java中的标识符命名规则如下:
1、区分大小写,MyName和Myname是不同的标识符
2、首字母不能是数字开头,可以是下划线_或者美元符$或字母
3、除了首字母外的其他字符,有下划线、美元符、数字、字母构成;
4、关键字不能作为标识符;
注意:此处的字母采用的是双字符Unicode编码,它包含了亚洲文字编码,如中文、韩文、日文等,但是我们在定义标识符是不建议使用中文。
命名规范:
驼峰命名法:
变量名、方法名:首字母小写,其余单词的首字母大写(小驼峰)
类名、项目名、接口名:首字母大写、其余单词的首字母大写(大驼峰)
包名:全部小写,用英文的. 隔开,实例:域名反写
edu.zut com.baidu
常量名:全部大写,单词之间用_隔开
IF_ADDR
3、关键字
50个关键字,全都是有java本身定义好的,不能挪作他用(都是小写)
abstract | accsert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
4、保留字
即不是关键字,又不能作为标识符使用,也不能在程序中使用的字符序列。goto与const
goto :在其他语言中叫做“无限跳转”,在java中不再使用,因为无限跳转语句会破坏程序结构;在java中,goto的替换语句可以通过break,continue、return实现有限跳转
const:其他语言中用于声明常量,java中声明常量使用的是public statis final方式
5、java分隔符
在java中用于分隔的字符,主要有分号; 大括号{} 和空白
1、分号,表示一条语句的结束
2、大括号,在java中,{}括起来的语句集合称为语句块或符合语句;在定义类或方法时,语句块也被用作分割类体或方法体
3、空白,在java中,元素之间允许有空白,空白数量不限;适当的空白可以改善对源代码的可读性。
6、变量
在java中,我们如何表示变化的数据? 利用变量
变量:变量即在程序运行过程中它的值是允许改变的量。
相当于把一段数据都赋值给一个简单好记的名称,这就是变量。
强调变量的命名规范
这里我们只讲局部变量;全局变量和静态变量都不讲。
变量的语法格式
数据类型 变量名称 【=初始值】;
变量名的定义要遵守标识符命名规范,同时在相关的作用域中不能有重复的变量名。变量的适用范围即变量的作用域,超过作用范围即无法使用。
变量的使用是通过其变量名称进行直接使用的。
局部变量的使用需要先赋值后使用。
Java中的基本数据类型
数据类型分为8种基本数据类型和引用数据类型
基本类型:数值型:整数类型:(byte,short,int,long ); 浮点类型(float,double)字符型(char)->也属于整数类型;布尔型(boolean);引用类型:类(class);接口(interface);数组(array)。
基本数据类型的长度和范围
数据类型 | 大小/位 | 可表示的数值范围 |
---|---|---|
byte(字节型) | 8 | -128~127 |
short(短整数) | 16 | -2^15~2^15-1 |
int(整数) | 32 | -2^31~2^31-1 |
long(长整数) | 64 | -2^63~2^63-1 |
float(单精度) | 32 | -3.4E38~3.4E38 |
double(双精度) | 64 | -1.7E308~1.7E308 |
char(字符) | 16 | 0~65535 |
boolean | true/false |
基本数据类型的变量定义使用时,需要注意,long类型的整数需要在初始值后面加l或L
float类型的小数需要在数值后面加F或f,double类型加不加d均可。同时,整数数值的默认类型是int;同时,char字符类型的使用需要使用单引号,同时char字符类型也属于数值类型,可与int等数值类型进行数学计算或者进行转换,其对应的数值取值范围为0--2^16-1
补充:
字符串:有字符组成的一串字符序列;java中常使用String表示字符串;例如:String name = “张三”;
当+连接字符串与其他数据时,此时+号不再是算数运算符,而是拼接的意思。
如:String s = "hello"+“!”;
练习:使用idea自定义类,在main方法种创建变量姓名(String)、年龄(int)、身高(double)、体重(float)、电话(long)、工资(double)并进行赋值,然后在控制台打印输出对应信息。
练习代码:
public class First {
public static void main(String[] args) {
// 姓名(String)、年龄(int)、身高(double)、体重(float)、电话(long)、工资(double)
String name = "jack";
int age = 15;
double height = 1.71;
float weight = 66.6f;
long phone = 64981981320l;
double money = 12000;
System.out.println("姓名:"+name+" 年龄:"+age+" 身高:"+height+" 体重:"+weight+" 电话:"+phone+" 工资:"+money);
}
}
7、基本数据类型转换
在java中,定义好的基本数据类型可以根据需要进行类型转换,如int转double,float转int等。
根据数据能否自动完成类型转化分为:自动类型转换与强制类型转换。
自动类型转换
类型转换自动完成,不需要加以干预。总体原则是小范围的数据转大范围的数据自动完成。
转换顺序:byte-short-int(char)-long-float-double
注意:char转换较为特殊,参考ASCII码表,char转int自动转,int转char强制转
强制类型转换
即大范围的数据转成小范围类型的时候,不会自动转换,需要进行强制转换;强制类型转换可能会造成数据进度的丢失或者数据溢出。
强制类型转换格式: (强转的数据类型)强转的数据;
数据转换注意:
1、不能对boolean类型进行类型转换;
2、在把容量大的类型转换为容量小的类型时必须使用强制类型转换;
3、转换过程中可能导致溢出或者精度损失;
4、浮点数到整数的转换是通过舍弃小数部分得到的,而不是四舍五入;
5、条件是转换的数据类型必须是兼容的;
6、整数的默认类型时int long a = 100L;
7、浮点类型不存在这种情况,因为在定义float类型时必须在数字后面加上F或f;
8、使用long类型的数据一定要在数值后面加上L;一般不加小写l,因为l和1很像。
练习:
着重练习int与char类型之间的转换。
定义char c = ‘A’; 转换成int类型
定义int i = 100,转换成char类型
定义double d = 101.25,转换成int类型,并观察数据是否丢失;
定义int i2 = 10002,转换成long 类型,short类型以及byte类型,并观察转换成byte类型等。。。。
练习代码:
public static void main(String[] args) {
/*
* 定义char c = ‘A’; 转换成int类型
定义int i = 100,转换成char类型*/
char c = 'A';
int a = c;
int i = 100;
char b = (char) i;
System.out.println("c的int类型数值为:"+a+" i的char类型字符为:"+b);
//定义double d = 101.25,转换成int类型,并观察数据是否丢失;
double d = 101.25;
int e = (int)d;
System.out.println("d的int类型数值为:"+e);
//定义int i2 = 10002,转换成long 类型,short类型以及byte类型,并观察转换成byte类型等。。。。
int i2 = 10002;
long l = i2;
short s =(short) i2;
byte b1 = (byte)i2;
System.out.println("i2的long类型数值为:"+l+" i2的long类型数值为:"+s+" i2的long类型数值为:"+b1);
}
8、运算符
Java中,运算符大致分为算术运算符,关系运算符,逻辑运算符,位运算符和其他运算符。
算术运算符
用于数值类型数据的算术运算,按照操作数的不同,分为一元运算符和二元运算符。
一元运算符:++、--;
二元运算符:+ 、-、*、/、%;
算术赋值运算符:+=、-=、*=、/=、%=;
注意:++、--的使用,当++参与运算时,++在前与在后是不同的;
在后表示先赋值后运算,++在前表示先运算再赋值。
比较运算符:>、<、>=、<=、==、!=;
比较运算符合的时候正好和boolean结合使用。
逻辑运算符:&& 并且、|| 或者、
位运算符:
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
& | 与 | 1&0,0&0,1&1 | 0,0,1 |
| | 或 | 1|0,0|0,1|1 | 1,0,1 |
^ | 异或 | 1^0,0^0,1^1 | 1,0,0 |
^运算规律:
1^0 = 1,0^0 = 0,任何数和0相异或得到的都是这个数本身;
0^1 = 0,1^1=0,任何数和1相异或得到的是这个数的相反;
一个数自己和自己异或得到的是0;
三目运算:?:
定义:对于条件表达式b ? x : y
,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。
运算符的优先级:
优先级 | 运算符 |
---|---|
1 | () |
2 | !、+(正)、-(负),++,-- |
3 | * 、/、% |
4 | +(加)、-(减) |
5 | <、<=、>、>= |
6 | ==、!= |
7 | ^ |
8 | && |
9 | || |
10 | ?: |
11 | =、+=、-=、*=、/=、%= |
9、java流程控制
选择结构
if语句:if(){}
当()里面的表达式为真时执行{}里面的内容
//并列if判断 无论上面的条件是否成立,下面的if都会进行判断
if(a<b){
System.out.println("a小于b");
}
if(a>b){
System.out.println("a大于b");
}
if(a==b){
System.out.println("a等于b");
}
if …else
//上面条件成立时下面就不再判断
if(a<b){
System.out.println("a小于b");
}else{
System.out.println("a不小于b");
}
if…else if…else
if(a<b){
System.out.println("a小于b");
}else if(a>b){
System.out.println("a大于b");
}else{
System.out.println("a等于b");
}
多条件判断
if(1<a&&a<5){
System.out.println("并且是&&,两个条件都为真");
}
if(a==1||a==3){
System.out.println("或者是||,两个条件至少有一个是真");
}
if(a!=3||a!=4){
System.out.println("!=代表不等于");
}
练习: 定义变量性别(sex)以及收入(salary)如果是sex为true并且薪水大于8000就输出高富 帅,否则就是穷屌丝,如果sex为false,并且薪水大于 8000,输出白富美否则就是.......
练习代码:
public static void main(String[] args) {
//输入
Scanner sc = new Scanner(System.in);
//输入性别,true或false
Boolean sex = sc.nextBoolean();
//输入薪水
int salary = sc.nextInt();
//判断
if(sex .equals(true)&&salary>=8000){
System.out.println("高富帅");
}else if(sex.equals(true)&&salary<8000){
System.out.println("矮矬穷");
}else if(sex.equals(false)&&salary>=8000){
System.out.println("白富美");
}else{
System.out.println(".......");
}
}
定义变量成绩(score),根据成绩判断,如果成绩大于90,输出优秀,[80,90)输出良好,[60,80)输出及格,60以下输出不及格
练习代码:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
//成绩大于90,输出优秀,[80,90)输出良好,[60,80)输出及格,60以下输出不及格
if(a>=90){
System.out.println("优秀");
}else if(a>=80&&a<90){
System.out.println("良好");
}else if(a>=70&&a<80){
System.out.println("及格");
}else {
System.out.println("不及格");
}
}
switch case语句
switch后边的表达式只能是整型字符型(byte, short,int,char),枚举类型,其中jdk7之后支持字符串型
10、Scanner类
属于引用类型,创建的时候需要固定格式
数据类型 变量名 = new 数据类型();
需要导入所在的包:import java.util.Scanner;
创建对象:Scanner sc = new Scanner(System.in);
获取输入的整数:int s = sc.nextInt();
获取输入的字符串:String str = sc.nextLine();
注意sc.nextInt()和sc.nextLine()会中断程序
练习:使用switch计算每个月有多少天 (随机年份2001 年到3033年,月份在控制台输入1-12,如果输入的月份不在1-12则提示用户重新输入月份,闰年:能被4整除 但不能被100整除,或者能被400整除)
练习代码:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份:");
int m = scanner.nextInt();
int day = 0;
switch (m){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
case 2:
if(year%4==0&&year/100!=0||year%400==0){
day = 29;
}else {
day = 28;
}
}
System.out.println(day);
}
11、循环结构
while循环和do–while循环
while循环 格式:
当条件为真时执行循环体中的内容;
while(条件){
语句;
}
do-while循环
先执行do中的内容,然后进行条件判断,如果条件为true, 执行循环体中的内容
在do中定义的变量只能在do中使用,不能在条件中和 do–while外进行使用
格式为 :
int b = 0;
do{
b = 13;
System.out.println(111111);
}while(b<15);
for循环
for循环的格式:
//如下:先定义一个变量i,当i<10时执行循环内容,执行一次i+1
//在for循环中定义的i只能在for循环中使用
for(int i=0;i<10;i++){
System.out.println("hello");
}
break :跳出当前循环;
continue:跳出当前此次循环,下次循环继续;
练习:1、利用while循环和do..while循环 输出字母a-z 、A-Z
public static void main(String[] args) {
char c = 'a';
char l ='A';
while(c<=122){
System.out.println(c);
c++;
}
do{
System.out.println(l);
l++;
}while(l<=90);
}
2、利用while或do....while循环,结合scanner,从控制台获取输入的整数,从这个值开始,依次与这个值之后的n个自然数相加,当和超过100时结束,输出此时的值和自然数的值。
public static void main(String[] args) {
int a,sum = 0,i = 0;
Scanner sc = new Scanner(System.in);
a = sc.nextInt();
i = a;
while(sum<=100){
sum = sum+a;
a++;
}
System.out.println("此时的值是:"+a+" 输入的自然数的值是:"+i);
}
3、猜数字游戏,利用random随机产生一个[50,100]之间的数字,用户在控制台输入一个数字,如果用户输入的数字等于随机产生的数字,则输出游戏结束,否则,比较用户输入的数字,告诉用户输入的数字是大于随机数还是小于随机数,之后用户重新输入继续猜数字,直到猜对为止
public static void main(String[] args) {
System.out.println("猜数字游戏开始");
System.out.println("输入1-100之间的数据:");
//创建Random类变量
Random ran = new Random();
int a = ran.nextInt(100)+1;
//创建Scanner类变量
Scanner in = new Scanner(System.in);
while(true) {
int b = in.nextInt();
if(number>a) {
System.out.println("您猜测得数字较大,请继续猜测!");
}else if(b<a) {
System.out.println("您猜测得数字较小,请继续猜测!");
}else {
System.out.println("恭喜你,猜对了!");
System.out.println("游戏结束!");
break;
}
}
}
4、利用for循环计算100文钱能买多少只鸡?5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱买三只小鸡,问100问钱买100只鸡,那么公鸡、母鸡、小鸡各多少只?
public static void main(String[] args) {
for(int i=1;i<=20;i++){
for (int j=0;j<34;j++){
if(i*5+j*3+(100-i-j)/3==100&&(100-j-i)%3==0){
System.out.println("公鸡:"+i+"只,母鸡:"+j+"只,小鸡:"+(100-i-j)+"只");
}
}
}
}