自学Java语言基础第一天

一、Java环境设置

1.下载JDK -> 安装JDK -> 配置环境变量 -> 用命令行工具检查
2.下载Eclipse -> 安装 Eclipse

二、Java基础语法

1.Hello World!
public class First{

public static void main(String[] args) {
  System.out.println("Hello World!");//换行
  //System.out对象调用了它的println方法
  System.out.print("Hello World!");//不换行
 }
}
//约定俗称K&R代码风格,感觉好反人类,好别扭
//觉得微软代码风格好看多了

注意:
(1)源代码的文件名必须与类名相同;
(2)Java中的“方法”就是其他语言中的“函数”;
(3)Java中所有函数都是某个类的方法;
(4)main方法必须声明为public,main方法必须为静态的,main方法是程序的入口;

2.注释

(1)单行注释://
(2)多行注释:/* 和 */
(3)文档注释:解释类、方法、成员变量的用途
(Eclipse中快速生成文档注释:/**加回车)
注意: 不能嵌套多行注释;注释中当心“\u”;

3.数据类型

(1)八种基本类型primitive type:
4种整形:byte(1字节)、short(2字节)、int(4字节)、long(8字节)
2种浮点类型:float(4字节)、double(8字节)
1种字符类型:char(2字节)(c中1字节)
1种boolean类型:取值true、false
(2)引用类型(reference type):引用类型的值是对对象的引用(String属于引用类型)

byte v1 = 123; //十进制
short v2 = 0b11001; //二进制,0B11001
int v3 = 0xF78A; //十六进制
long v4 = 199L;

float v1 = 123.4F; //以F或f结尾表示float类型
double v2 = 123.4D; //以D或d结尾表示double类型
double v3 = 123.4; //默认为double类型
float v4 = 1.234E2F;
double v5 = 1.234e2;

boolean v1 = true;
boolean v2 = false;

char v1 = 'A';
String v2 = "ABCD";

String v3 = ""; //v3指向一个空串的地址
String v4 = null; // v4不指向

/*数字中可以加下划线:增强代码可读性(不可在小数点、特殊字母前后使用,不可在数字最前和最后使用)*/
4.变量与常量

(1)变量
任何变量在使用之前都必须先初始化
a.局部变量:需要手动初始化
b.非局部变量(实例变量、类变量):编译器会自动给未初始化的变量设置一个初始值(个人感觉实例变量和C++中数据成员差不多,类变量和C++中静态数据成员差不多)
默认值是:0、boolean:false、对象:null
(2)常量(final)
a.只能赋值一次,赋值后不可更改
b.常量名一般大写
c.类常量(static final):一个常量在一个类的多个方法中使用
----定义在main外部;----声明为public,其他类的方法也可以使用这个常量;

public class first{   
	public static final double PI = 3.14;
	public static void main(String[] args) {
	
	}
}
5.运算符

原则:尽量使用小括号

System.out.println(Integer.toBinaryString(-128));
//输出对应的2进制数

注意: Java条件判断中条件必须是boolean类型

6.类型转换(理解)

(1)窄化基本类型转换:数据范围大的转为数据范围小的,可能丢失精度和范围,需强制转换
(2)拓宽基本类型转换:数据范围小的转为数据范围大的,可以自动转换/隐式转换
(3)boolean类型不可以与其他数据类型转换
(4)一元数字提升(Unary Numeric Promote):将byte、short、char类型的一元数字自动提升为int类型;
执行它的条件:数组的索引、创建数组时的数组长度;一元运算符+和-;按位取反~;位移<<、>>、>>>;

public class First{

 public static void main(String[] args) {
  int[] array = { 11, 22, 33, 44 };
  byte index = 2;
  array[index] = 20; //byte自动变成int;可以将[]看成一元运算符
  
  char c = 'A';
  System.out.println(c);
  System.out.println(+c);
 }
}

(5)二元数字提升(Binary Numeric Promote):提升一个或两个数字;
任意一个数字是double类型,那么另一个就会被转换为double类型;(顺序为double、float、long、int);
执行它的条件:*、/、%、+、-、<、<=、>、>=、==、!=、&、^、| 、 ?:

byte v = 1;
v1 = v1 + 2; //错误
v1 += 2; //正确
//Java尽可能写复合赋值运算符
7.关键字、标识符

-----关键字一律用小写字母标识
(1)数据类型: boolean、byte、char、 double、 false、float、int、long、new、short、true、void、instanceof
(2)语句:break、case、 catch、 continue、 default 、do、 else、 for、 if、return、switch、try、 while、 finally、 throw、this、 super
(3)用于修饰: abstract、final、native、private、 protected、public、static、synchronized、transient、 volatile
(4)用于方法、类、接口、包和异常: class、 extends、 implements、interface、 package、import、throws
(5)无意义关键字:cat、 future、 generic、innerr、 operator、 outer、rest、var等
(6)Java有3个保留字:true、false、null,它们不是关键字,而是文字/字面量
-----标识符:变量名、方法名、类名
命名规则:Java字母(比较宽泛、有一个方法可以判断) + Java数字;不能使用关键词、以上三个字面量;
命名建议:小驼峰myNameAndAge(变量名、方法名)、大驼峰MyNameAndAge(类名)、全大写+下划线(全局常量)

8.数组(在Java中为引用类型)

(1)数组的创建

int[] arr1; //推荐写法
int[] arr2 = {}; //空数组
int arr3[] = {};

int[] arr4 = new int[] { 1, 2, 3, 4 };
int[] arr5 = { 1, 2, 3, 4};

int[] arr6 = new int[4];

int[][][] arr7;
int[] arr8[][];

(2)数组的内存
数组元素储存在堆空间;Java的堆内存申请会自动进行初始化
(3)数组的遍历

int[] arr = { 11, 22, 33, 44 };
  for(int i = 0; i < arr.length; i++) { //arr.length是数组的一种属性
   System.out.println(arr[i]);
  } //第一种 
  for(int ele : arr) {
   System.out.println(ele);
  } //第二种

(4)

String[] arr = new String[4];
  System.out.println(arr); //[Ljava.lang.String;@2ff4acd0  
  //@2ff4acd0是哈希值
  System.out.println(arr.hashCode()); //804564176是哈希值
  System.out.println(arr[1]); //null
  
  int[] array = { 11, 22, 33 };
  System.out.println(array[2]); //查找:array[0] + 2 * 4,随机访问
9.方法

(1)书写格式
修饰符 返回值类型 方法名(参数列表){
方法体
}
(2)可变参数
可变参数必须放在最后面

public class First{
	
	public static void main(String[] args){
		System.out.println(sum( 10, 20, 30 ));
	}
	
	public static int sum(int... numbers){
	//numbers是数组,默认={}
		int result = 0;
		for(int num : numbers){
			result += num;
		}
		return result;
	}
}

(3)参数的传递
基本类型作为参数是值传递
引用类型作为参数是引用传递(地址传递)

public class First {

 public static void main(String[] args) {
 //  int n = 10;
 //  test1(n);
 //  System.out.println(n);
   int[] n = { 11, 22, 33};
   test2(n);
   System.out.println(n[0]);
 }
 
 // public static void test1(int v) {
 //  v = 20;
 // }
  public static void test2(int[] v) {
   v[0] = 66;
  }
 }
 //注释掉的为值传递;未注释掉的是地址传递

(4)返回值

public class First{
  public static void main(String[] args){
    int[] m = test();
    for(int i = 0; i < m.length; i++){
      System.out.println(m[i]);
    }
  }
  
  public static int[] test(){
    int[] n = { 11, 22, 33 };
    return n; //返回的是地址
  }
}

(5)方法签名(方法名 + 参数类型)

public static double sum(int i, long l, double d){
  return i + l + d;
}
//方法签名:sum(int, long, double)

在同一个类中,不能定义2个方法签名一样的方法
(6)方法的重载
Java的方法支持重载:方法名相同,方法签名不同(参数个数/类型不同)

10.资料

注意: 按CTRL键可以看源码
官方文档:
Java语言规范:http://docs.oracle.com/javase/specs/index.html
http://docs.oracle.com/javase/specs/jls/se8/html/index.html
Java虚拟机规划:
https://docs.oracle.com/javase/specs/jvms/se8/html/index.html
Java教程:
https://docs.oracle.com/javase/tutorial/java/index.html
Java API文档:
https://docs.oracle.com/javase/8/docs/api/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值