1.环境配置:JDK,JRE,JVM,Path
JDK:Java Develop Kit
Java开发工具 + JRE
JRE:Java Runtime Environment
核心类库+JVM
Java跨平台的根本:
不同操作平台(Mac,Linux,Windows)有对应版本的JVM
path:
目的:为了在任意路径下运行JDK安装路径下的bin目录下的exe命令
配置的时候需要新建一个Java_Home变量
Java_Home=JDK的安装路径
path=%JDK的安装路径%;path其它路径
2.入门程序:HelloWorld
public class HelloWorld{//public 类名必须和.java的源文件名一致
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
3.常量:死数据,一旦写好,不可改变,恒定不变的量
整数常量:1 2
小数:1.23,3.2
字符:'A' //'' Java不支持空字符
字符串:"" "abc" //子串:由字符串中的相邻字符组成的子串: ab bc ac不是 abc
4.变量:可以改变的量
a.定义
int a=3;//开辟一个4byte内存的空间,然后把3以二进制的形式,存放在这个内存单元中
String str="abc";
b.使用
赋值: int a=3;
取值: System.out.println(a);
c.局部变量与成员变量作用域
class Demo{
static int i=3;//成员变量,作用域:整个类,类中所有的方法都可以方法访问
public static void main(String[] args) {
method(10);
for (int i=0;i<3;++i) {//i也是一个局部变量,作用域仅在for循环中,超出for循环,i变量将要被释放
System.out.println(i);
}
}
public static void method(int a){//a=10 a为method方法的形参,同时也是一个局部变量 作用域仅在method()方法内部
int c=3; //当method()方法调用结束,局部变量a和c将被销毁
System.out.println(i);
}
}
5.运算符
a.算术运算符:+,-,*,/,%,++,--
1.+:
a.求出两个数的和
b.任意类型数据通过+与字符串拼接最终的结果都是一个字符串
2.-,*:
和数学中的运算一致
3./ %:求一个三位数各个位数
345:
345%10=5//个位数
345 /10 %10= 4//十位数
345 /10/10 %10=3//百位数
4.++,--
int a=3;
int j=a++;//后置++,先使用a的值,然后a=a+1;
//j=3 a=4
//int temp=a;
//a=a+1;
//j=temp;
j=++a; //先a=a+1,然后在使用a的值
//j=5 a=5
无论是自增还是自减会自动强转
byte b=1;
b++;//b=(byte)(b+1);
b.赋值运算符:=,+=,-=,/=:会自动强转
+=:
byte a=3;
a+=3;//a=(byte)(a+3)
c.比较运算符:>,<,>=,<=:运算结果都是boolean类型
3>=4 false
d.逻辑运算符:&&,&,|,||,!,^
&&:短路与 且
参与运算的表达式都必须是boolean类型表达式,并且运算结果也必须是boolean类型
如果第一个表达式运算结果为false,不再运算第二个表达式,整个表达式结果为false
||:短路或 或
参与运算的表达式都必须是boolean类型表达式,并且运算结果也必须是boolean类型
如果第一个表达式运算结果为true,不再运算第二个表达式,整个表达式结果为true
!:!true false !false true
boolean flag=flase;
if(!flag){
}
e.三元运算符:?:
int a=10,b=3,c;
c= a>3 ?(b>5? 6 : 8) : 6; //c=8,三元运算符的嵌套使用
7.变量自动类型提升与强制类型转换
1.自动类型提升:
a.byte->short->int->long->float->double
char->int->long->float->double
任选箭头方向的两种类型都是自动类型提升
b.把int类型的常量赋值给byte,short,char类型的变量,如果常量在
byte或short或char的范围内编译通过
byte b=127;//-128~127
c.如果byte,short,char类型的变量做数学运算,byte,short,char
会自动类型提升为int在参与运算
2.强制类型转换:
byte<-short<-int<-long<-float<-double
char<-int<-long<-float<-double
byte<->char:无论是从byte->char还是char->byte都需要强制类型转换
short<->char:无论是从short->char还是char->short都需要强制类型转换
8.选择结构:if,switch
1.if格式:
if(布尔表达式){
}
if(布尔表达式){
}else{
}
if(布尔表达式1){
}else if(布尔表达式2){
}else if(布尔表达式2){
}...else{
}
2.switch:
根据变量的值去找对应的case匹配如果一个都不匹配,就去找default
int x=3
switch(x){//变量类型byte,short,char,int JDK1.5枚举,JDK1.7 String
case 1:{//大括号可有可无
// 可以写任意语句(for,if,方法调用)
}
break;
case 2:{
//可以写任意语句(for,if,方法调用)
}
break;
....
default:{
//可以写任意语句(for,if,方法调用)
}
}
9.循环结构:for,while,do..while()
数组遍历:
int[] arr=new int[10];
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
int i=0;
while(i<arr.length){
//第一种
System.out.println(arr[i++]);//先使用i的值,在i=i+1
//第二种(推荐)
//System.out.println(arr[i]);
//i++;
}
int i=0;
do{
System.out.println(arr[i]);
i++;
}while(i<arr.length);
集合遍历:
GirlFriend MM=new GirlFriend();//里面属性有默认值,name=null hair=null,eye=null,height=0.0
MM.name="欧阳伊";//赋值动作
MM.hair="长发及腰";
MM.eye="大眼睛";
MM.height="1.70";
System.out.println(MM.name+".."+MM.hair);//取值动作
ArrayList<GirlFriend> al=new ArrayList<GirlFriend>();
al.add(MM);
for (int i=0;i<al.size();i++) {
GirlFriend girlFriend= al.get(i);
System.out.println(girlFriend.hair);
}
10.break,continue 关键字:break可以用在switch和循环结构,continue只能用在循环中
for(int i=0;i<3;++i){//②
for(int j=0;j<3;++j){//①
// break;//直接跳出①循环
// continue;//结束①的本次循环,开始下次循环
}
//break;//直接跳出②循环
//continue;///结束②的本次循环,开始下次循环
}
11.方法/函数/功能
a.定义
//参数类型和返回值类型可以为引用数据类型和基本数据类型
//返回值类型可以为void
public static void main(String[] args) {
return;
}
b.调用
public static void main(String[] args) {
int a=3,b=4
method(a,b);
System.out.println(a+" "+b);//3,4 基本类型的值传递仅仅是拷贝副本,method()方法中a,b的改变不影响main的a,b
String[] str={"a","def","ggg"};//str相当于门牌号
method(str);
System.out.println(str[1]);//张三丰
}
public static void method(int a,int b){
a=a+1;
b=b+2;
}
public static void method(String[] str){ //拷贝一个门牌号给method的str,method的str和main的str访问的是同一个数组
str[1]="张三丰";
}
c.重载:
方法名相同,参数列表(参数个数,参数的类型,参数的类型的顺序)不同
与方法返回值无关
12.引用类型:
a.特点(存放的值特点)
引用类型变量存的都是对象的地址值
b.JDK 已有的引用数据类型:
Scanner,Math,String,Random,ArrayList(<>,CRUD,基本类型存储),数组类型(定义,使用,2个错误,存储,默认值)
1.Scanner:键盘录入
a.导入 java.util.Scanner
b.Scanner scanner=new Scanner(System.in);//System.in关联键盘
c.scanner.nextInt(),scanner.nextDouble(),scanner.next();scanner.nextLine();
2.Math:数学类,有一些与数学相关的函数
a.不需要导包,因为Math类在java.lang
b. long l=Math.round(3.5)//4
double d=Math.round(3.4)//自动类型提升,3.0
Math.max(3,4)//4
3.String:专门处理字符串
a.String类在java.lang包下
b.String str="ab c ";
str.length();//5
String str2=str.trim();//str2="ab c"
String str3=str.substring(1,1);//"b"
4.Random:专门用来产生一个随机数(验证码)
a.Random类在java.util.Random 需要导包
b.Random random=new Random();
random.nextInt(99)+1;//[1,99](主要)
random.nextDouble();//[0.0,1.0)
5.ArrayList:集合类,只能存放引用数据类型
a.ArrayList在java.util包下,需要导入
b.
ArrayList<你要在集合中存放什么类型,这就写什么类型> al=new ArrayList<你要在集合中存放什么类型,这就写什么类型>();
int-->Integer
char-->Character
c.al.add(跟尖括号中的类型一致)
al.get(int index);//集合中的元素也是从0开始编号
al.size();//获取集合长度
6.数组类型:
int[] arr=new int[3];//int[]代表引用数据类型
//相当于声明了3个int类型变量 arr[0],arr[1],arr[2]
c.自定义引用数据类型:
//自定义数据类型的定义
class Person{
//定义所有人共有的属性
String name;
String sex;
int age;
}
//自定义数据类型的使用
Person p=new Person();
//为这个人的各项属性赋值
p.name="高圆圆";
p.sex="Female";
p.age=33;
//取出这个人的各项属性值
System.out.println("姓名是 "+p.name+"性别是 "+p.sex+"年龄是 "+p.age);
|
|