1.jdk的配置
我的电脑右键属性------高级------环境变量--------系统变量
新建2个:
JAVA_HOME:jdk安装路径
CLASS_PATH:.
修改1个:
path:在path前添加jdk安装路经\bin;如:
D:\dev\jdk1.8.0_102\bin;
如何测试jdk配置成功?
Javac:编译指令
Java:执行指令
java-version:查看jdk版本号
Java的运行原理图:
2.开发一个Java程序的步骤:
a.书写Java源代码
b.编译Java源代码
c.解释执行
3.程序:
输出一个hello world
main函数:既是程序的起始点,也是结束点。jvm只认识main方法。
public static void main(String args[]){ System.out.println("hello world"); }
4.基本语法
变量:在程序运行过程中其值发生改变的量
格式:数据类型 变量名=变量值;如(int a=10;)
常量:在程序运行过程中,值不发生改变的量
字符串常量:用双引号括起
整数常量:不带小数的数字
小数常量:带小数数字
字符常量:用单引号括起
布尔常量:布尔值,表示真假
空常量:特殊的值,空值,不能直接输出
数据类型:基本数据类型 : 数值型: 整数(byte(1),short(2),int(4),long()8)
浮点数(float(4),double(8))
字符(char(2))-------->封装类:Character
非数值型:布尔(boolean(1))
引用数据类型: 类(class)
接口(inter face)
数组([])
运算符:算数运算符:+加,-减,*乘,/除,%取余
赋值运算符:"=="右边赋值给左边,"-="左减右给左,"+="左加右给左,"*=左乘右给左","/=左除右给左","%= 左取余右给左"
自增自减运算符:"++"自加1,"--"自减1(运用时注意是前++还是后++)
关系运算符:"=="左右是否相等, "!="左右是否不相等 ,">"左是否大于右 ,"<"左是否小于右, ">="左是否大于等于右, "<=左是否小于等于右"
逻辑运算符:"&"左右都对为对,"|"左右都错为错,"^"左右结果不同为对,相同为错,"!"与结果相反
短路逻辑运算符:"&&"短路与,左为真右执行,左为假右不执行"||"短路或,左为假右执行左为真右不执行
三元运算符:格式:关系表达式?表达式1:表达式2(关系为真输出1为假输出2)
表达式:是变量,常量,运算符,方法调用的序列,它执行指定的计算并返回一个确定的值
选择结构:格式:if(关系表达式){
语句体1
}else if(关系表达式){
语句体2
}else{
语句体3
}
循环结构:a.for(初始化语句;条件判断语句;条件控制语句){
循环体语句
}
b. 初始化语句
while(条件判断语句){
循环体语句;
条件控制语句;
}
c. 初始化语句
do{
循环体语句;
条件控制语句;
}while(条件判断语句)
程序判断:格式:switch(表达式){
case 值1:语句体1;break;
case 值2:语句体2;break;
case 值3:语句体3;break;
case 值4:语句体4;break;
default:语句体;
}
(注:break是结束,continue是结束本次循环。表达式结果为值几则执行几之后的所以直到大括号或者break)
5.键盘输入
导包:import java.util.Scanner;
创建键盘输入对象:Scanner sc=new Scanner(System.in);
接收数据:String name=sc.next();//接收字符串,遇见空格结束接收
String name=sc.nextLine();//整行接收
int age=sc.nextInt();//接收整数
float score=sc.nextFloat();//接收小数
6.Math类
System.out.println((int)math.random());//随机数范围:[0,1)
System.out.println((int)(math.random()*51+50));//范围:(50-100(含)]
int a=-9; System.out.println(math.abs(a));//求绝对值
int m=3; int n=2; System.out.println(math.max(m,n));//较大的值
System.out.println(nath.min(m.n));//较小的值
float y=6.8f; System.out.println(math.rount(y));//四舍五入
float z=7.8f; System.out.println(math.floor(z));//向下取整
7.String类:操作字符串
String srt="hello world";//字符串的起始位置从0开始
System.out.println(str.equals("hello world"));//equals(),判断内容是否一致
char c=str.charAt(10); System.out.println(c);//根据索引下标寻找对应字符
System.out.println(str.charAt((str.length()-1)));//求字符串长度的方法
System.out.println(str.toUpperCase());//转大写
System.out.println(str.toLowerCase());//转小写
str=str.replace('o','中'); System.out.println(str);//替换
/* if (str.indexOf("hello")!=-1){
System.out.println("找到了");
str=str.replace('o','中'); //(查找并替换)
}else{
System.out.println("没找到");
}*/ //查找
s=s.substring(0,3);//截取区间范围
s=s,substring(3);//从哪开始到结束
8.方法
public static void main(String args[]){}//程序入口
public:访问控制修饰符
static:静态的
void:无返回值
main:方法名
():参数列表
{}:方法体
a.有返回值有参数:public static int sum(int n){return 1;}
b.有返回值无参数:public static int sum(){}
c.无返回值有参数:public static void sum(int a){}
d.无返回值无参数:public static void sum(){}
形参:形式参数,定义方法时,小括号中的变量。
实参:实际参数,调用方法时;小括号中的内容。
9.数组
//全局变量:在类以内,main方法之外定义的变量。全局变量可以不给初值,有默认值。
//局部变量:在方法或代码块中定义的变量。局部变量必须赋初值。
a.变量和数组的区别:
*变量:存储数据的基本单元。在内存中开辟一块合适的区域空间,进行存储数据,根据程序的需要,随时发生变化的量。
声明变量的语法:数据类型 变量名;
特点:
只能存储一个数据;(新值覆盖旧值)
不能充分利用内存资源。
起名比较繁琐(每一个变量都需要起一个名)
*数组:存储一组数据的。在内存中开辟一块连续的区域空间,进行存取数据。即:将相同类型,若干变量(长度),有序组织起来的集合。称之为数组。
声明数组的语法:数据类型 数组名[];
//main(String[]args======>字符串数组)
特点:
存储一组数据(有长度的限制)
可以充分利用内存资源
起名简单 例如:int stuScore[];
b.数组分类:一维数组(熟练),二维数组(了解),三维数组(知道)
c.数组定义
*动态初始化
数据类型 数组名[]=new 数据类型[数组长度];
声明数组:
数据类型 数组名[];或者 数据类型 []数组名;
数组名=new 数据类型[数组的长度];//通过new关键字,在内存中开辟对应的内存空间。
int stuScore[];//声明一个整型的数组styScore stuScore=new int[12];//通过new关键字开辟12*4字节大小空间 int stuScore[]=new int[12];//创建整形数组stuScore for..each循环: for(数组类型 变量名:数组名){}
*静态初始化
数据类型 数组名[]={值1,值2...值n};
例如:int arr []={1,2,3,4,5};
*数据类型 数组名[]=new 数据类型[]{值1,值2,值3....值n};
例如:int arr[] new int[]{1,2,3,4,5}
堆栈:
public static void main(String[] args) { args[0]="hello"; args[1]="jerry"; for(int i=0;i<args.length;i++){ System.out.println(args[i]); } }
注意:使用数组必须通过new关键字进行创建。
在栈中声明(不占系统资源)----------new(创建)------数组,将使用权交给栈来管理。