开发工具
常用的java开发工具有
IntelliJ IDEA
Eclipse
IDE(Integrated Development Environment )集成开发环境,是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具
注释
对程序功能的说明,以某种特定符号作为标记,程序在运行过程中不会执行注释.
-
//用于单行注释(ctrl+/)
-
/*
用于多行注释
*/(ctrl+shift+/)
-
/**
*文档注释,用于为类,方法(函数),属性 功能进行说明,可在调用时提示
*/
关键字
定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
特点:关键字中所有字母都为小写
保留字
Java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标记符时要避免使用这些保留字 ( goto 、const)
标识符
Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符.
定义合法标识符规则:
1.由26个英文字母大小写,0-9 ,_或 $ 组成
2.数字不可以开头。
3.不可以使用关键字和保留字,但能包含关键字和保留字。
4.Java中严格区分大小写,长度无限制。
5.标识符不能包含空格。
Java中的名称命名规范:
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
JAVA变量
变量是程序中最基本的存储单元,程序执行中数值可变的.
先声明,再赋值,才能使用
变量是通过使用变量名来访问这块区域的.
变量要素包括变量名,变量类型。
Java程序中每一个变量都属于特定的数据类型,在使用前必须对其声明,声明格式为:
[修饰符] type varName [=value][,varName[=value]……];
例如:int i=0;
JAVA数据类型
分为基本数据类型和引用类型
基本数据类型:
1.数值型:
(整型):int (4) byte(1) short (2) long(8)
Java 各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。
int x = 011;//8进制
System.out.println(x);
int y = 0x11;//16进制
System.out.println(y);
int z = 0b11;//2进制
System.out.println(z);
Java语言的整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ ,如:
(浮点型):float(4) double(8)
与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。
Java 浮点类型有两种表示形式
十进制数形式,例如: 3.14 314.0
科学记数法形式,如 3.14e2 3.14E2
Java 浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f 或 F ,
float f = 100.5323143525f;//单精度
System.out.println(f);
double d = 1000.5432152465326;//双精度
System.out.println(d);
2.字符型:char(2)
char 型数据用来表示通常意义上的“字符”,char占2字节,字符用单引号括起来的单个字符,例如:
char c1 = 'a';
char c2 ='中';
char运算
char类型是可以运算的因为char在字符编码表中有对应的数值。在JAVA中,对char类型字符运行时,直接当
对应编码表的整数来对待。
char c='a'+1;
先将’a’提升为int,计算结果98,对应的字符是b。
/*
char表示一个字符
*/
char c = 'a';
char b = '中';
//在程序中如何表示一个字符
//编码表 a--97--二进制存储
//char可以参与算数运算
System.out.println(c);
System.out.println(c+b);//20110
/*
ASCII 最早发明 只能表示英文字符
GBK
Unicode 只是用来存储不同国家的文字信息 万国码,不会产生乱码
实际落地使用utf-8编码来具体实现 utf-8根据内容大小,自动调节占用的大小,1英文占1字节,汉字占3个字节
*/
3.布尔类型:boolean
boolean 类型适于逻辑运算,一般用于程序流程控制 。
boolean 类型数据只允许取值 true 或 false 。
不可以0或非 0 的整数替代false和true
引用类型:
类(class)接口(interface)数组([])
基本数据类型转换
boolean 类型不可以转换为其他的数据类型,其他7种可以互相转换。
1.默认转换
整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
容量小的类型默认转换为容量大的数据类型;数据类型按容量从小到大排序为:
byte,short,char->int->long->float->double
byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型
2.强制转换
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;
public static void main(String[] args) {
/*
默认转换:
小转大 直接转换
*/
byte a = 10;
int i = a;
long l = i;
float f = l;
double d = f;
/*
强制类型转换:
大转小
1.溢出
2.精度降低
*/
int x = 10;
byte y = (byte)x;
float z = 7.5f;
int n = (int)z;
System.out.println(y);
System.out.println(n);
//混合运算时,小容量会自动转为大容量计算
int m = (int)z+x+y;
int m1 = (int)(z+x+y);
char c = 'a'-;/26/ int --默认转为-> char byte short
System.out.println(c);
}
运算符
位运算符
package day02;
//位运算以二进制为前提
public class Demo2 {
public static void main(String[] args) {
int a = 6;
//左右移动均说的是二进制
System.out.println(a>>1);//除2
System.out.println(a<<1);//乘2
System.out.println(a>>>1);//无符号右移
int x = 4;
int y = 3;
/*
&
0000 0100
0000 0011
0000 0000
*/
System.out.println(x&y);//0
}
}
算术运算符
public static void main(String args[]){
/*
算术运算符: +,-,*,/,%,++,--
字符串连接运算符:+
*/
int a =b + c;//算术运算符
int s =a -c;
int x =a*s;
int y =a/s;
int m =a%s;//取余 如:3%2=1
System.out.println("结果是"+a);//+为连接符
int i=10;
int j =i++ +1;//先运算后自增j=11
int p =++i +1;//先自增后运算p=12
比较运算符
System.out.println(10>8);//true
System.out.println(1<0);//false
System.out.println(10>=10);//true
System.out.println(1<=0);//false
System.out.println(10==8);//false
System.out.println(1!=0);//true
/*
关系(比较)运算符: >,<,>=,<=,==,!=
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
注意:比较运算符“==”不能误写成“=” 。
*/
逻辑运算符
/*
逻辑运算符: !,& , | , &&,||
*/
int a=10;
int b=20;
int c=30;
System.out.println(!true);//!-非,直接取反,结果为false
System.out.println(a==b&b==c);//false &-与,同真为真,一假则假
System.out.println(a==b&&b==c);//false &&-短路与,同真为真,一假则假,若第一个条件为false,则不执行后面的判断条件,直接输出false
System.out.println(a==b|b==c);//|-或,同假为假,一真则真,结果为false
System.out.println(a==b||b==c);//false||-短路或,同假为假,一真则真,若第一个条件为true,则直接判断为true,不再对后面的语句进行判断
赋值运算符
符号:=
把=右边的赋值给=左边的。
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。支持连续赋值。
扩展赋值运算符: +=, -=, *=, /=, %=
/*
赋值运算符: = ,+ =,- =,* =,/ =
*/
byte b = 10;//10字面量默认int
int i=10;//把10赋给i
int i+=10;//i=i+10
int i-=10;//i=i-10
int i*=10;//i=i*10
int i/=10;//i=i/10
条件运算符
/*
语法:
(条件表达式)? 表达式1:表达式2;
为true,运算后的结果是表达式1;
为false,运算后的结果是表达式2;
表达式1和表达式2为同种类型
*/
10>5?10:5;//10
10<5?10:5;//5
表达式的运算顺序
控制台输入
使用标准输入串System.in
使用Scanner取得一个字符串或一组数字
在新增一个Scanner对象时需要一个System.in对象,因为实际上还是System.in在取得用户输入。Scanner的next()方法用以 取得用户输入的字符串;nextInt()将取得的输入字符串转换为整数类型;同样,nextFloat()转换成浮点型;nextBoolean()转 换成布尔型。
例:
import java.util.Scanner;
public class Demo4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个整数");
int num = scanner.nextInt();//IO阻塞 从控制台输入只能是整数 回车键 输入结束
System.out.println("请输入第一个字符串");
String s = scanner.next();
System.out.println(num);
System.out.println(s);
}
}
在使用Scanner对象时,需要在文件头带入 java.util.Scanner;
写法为: import java.util.Scanner;
流程控制
if 条件结构
if条件结构是根据条件判断之后再做处理
条件表达式必须是一个返回布尔结果的表达式。
语句可以是用{}包含的语句块。
if
if ( 令狐冲Java成绩 > 90 ) {
师父奖励令狐冲;
}
if else
if ( 令狐冲考试成绩 > 90 ) {
System.out.print("师父奖励令狐冲");
}else {
System.out.print("师父罚他闭关思过");
}
//多重if
if (x<1){
System.out.print("x=0");
} else if (x>1&&x<10){
System.out.print("x在1-10之间");
}else if (x>10){
System.out.print("x是大于十的数");
}
switch
多分支选择语句,根据表达式的值,来执行多个操作中的一个。
表达式可以是byte、short、int、char、枚举类型。JDK 7以后,可以使用String类型;
case语句后面只能使用常量表达式;
case后的值不能重复;
某个case分支如果没有提供break语句,则继续执行下一个case后的语句;
当表达式的值与任一case子句中的值都不匹配时,将执行default后面的语句;如果没有default子句,则程序直接跳出switch语句。
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day=31;//1.3.5.7.8.10.12月有31天
break;//跳出switch
case 4:
case 6:
case 9:
case 11:
day=30;//4.6.9.11月有30天
break;//跳出switch
case 2:
if(isLeapYear=year%4==0&&year%100!=0||year%400==0) {
day=29;//闰年2月有29天
}else {
day=28;//否则2月有28天
}
break;
default:
System.out.println("输入错误");
System.exit(0);
}
如果判断的具体数值不多,而且符合byte、 short 、int、 char这四种类型。虽然两个语句都可 以使用,建议使用swtich语句。因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
循环
循环语句功能
在某些条件满足的情况下,反复执行特定代码的功能
循环语句的四个组成部分
循环变量的初始化
循环条件部分
循环体部分
循环变量的更新
循环语句分类
while 循环
while 语句为如下形式:
while(逻辑表达式){ 语句; … ; }
执行过程
先判断逻辑表达式的值。若=true.则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成立为止
//最少一次都不执行
public static void main(String args[]) {
int i=1;
while(i<=20) {
System.out.println("吃了"+i+"个包子");
i++;
}
}
do/while 循环
while 语句为如下形式:
do { 语句; … ; } while(逻辑表达式);
执行过程
先执行语句,再判断逻辑表达式的值,若为true,再执行语句,否则结束循环。
//至少执行一次
public static void main(String args[]) {
String answer="y";
Scanner input = new Scanner(System.in)
do {
System.out.println("编写一道程序!");
System.out.println("老师,我合格了嘛?(y/n)");
answer=input.next();
}while(!"y".equals(answer));
}
System.out.println("恭喜你通过测试!");
}
for 循环
for 语句为如下形式: for(表达式1; 表达式2; 表达式3){ 语句; … ; }
执行过程 首先计算表达式1,接着执行表达式2,若表达式2的值 = true,则执行循环语句, 接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false. public class Test {
public static void main(String args[]) {
for (int i = 1; i <= 10; i++) {
System.out.println(“i=" + i);
}
}
break & continue
break 语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环;例如:
int stop = 4;
for (int i = 1; i <= 10; i++) {
//当i等于stop时,退出循环
if (i == stop){
break;
}
System.out.println(" i= " + i);
}
continue 语句用在循环语句体中,用于终止某次循环过程,跳过循环体中 continue 语句下面未执行的循环,开始下一次循环过程;例如:
public static void main(String args[]) {
for(int i=0;i<=10;i++) {
if(i==5) {
continue;//下面的代码本次不会执行,直接进入下一次循环
}
System.out.println(i);
}
}
循环嵌套
1.将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环和内层循环。
2.实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
3.结束外层循环
4.如果需要从多层循环跳出,则需要使用标签,定义一个标签,如out,然后在需要跳出的地方,用break out就行了.
//嵌套for循环
for(int i=1;i<=5;i++) {
for(int j=1;j<=i;j++) {
System.out.print("*");
}
System.out.println(" ");
}
out:for(int i;i<10;i++){
while(true){
int j=i;
break out;//t跳出内层循环到指定位置
}
}
JAVA中的方法
Java的方法类似于其它语言的函数,方法是解决一类问题的步骤的有序组合,方法包含于类或对象中.
方法在程序中被创建,声明格式:
[访问权限修饰符 修饰符…] [返回值类型] 方法名(形式参数类型 参数名){
Java语句;… … …
[return 返回值;]
}
/*
修饰符:这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
形式参数: 在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
返回值:方法在执行完毕后返还给调用它的环境的数据。
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。
*/
public class Admin {
String name;
int password;
public void print() {
System.out.println("姓名:"+name+"\t密码:"+password);
}
}
public static void main(String args[]) {
Admin a1=new Admin();//调用方法
a1.name="张凯琪";
a1.password=111111;
a1.print();
public class Method {
/*
在类中定义方法,用来解决某种问题的步骤集合
定义方法的语法
访问权限修饰符 [其他修饰符][返回值类型]/void 方法名([参数类型 参数名]){
方法体
[return 值]
}
*/
public static void main(String[] args) {
//创建方法所在类的对象
Method method = new Method();
method.printStar();
Method.printStar();
byte row = 10;
method.printStar1(row,6);
method.max(10,5);
}
public int max(int a,int b){
return(a>b)?a:b;
}
/*
定义一个有参的方法
*/
public void printStar1(int row,int column){
if(row==0||column==0){
return;//在此处表示方法中止执行,不表示方法的返回值
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
System.out.println("*");
}
System.out.println();//换行
}
}
/*
定义打印*4行4列星形形状
*/
public static void printStar(){
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
System.out.println("*");
}
System.out.println();//换行
}
}
}
return语句
return语句用于从当前执行的方法中退出, 返回到调用该方法的语句处继续执行。
有两种格式:
return 表达式; //将表达式的值返回
return; //不返回任何值,当方法说明中用void声明无返回值时, 可以使用这种格式,此类return语句有时可省略