Java SE基础

Java SE基础大纲:
1、基础
2、面向对象
3、线程(单例)
4、IO
5、数据结构(数组、集合、队列)
6、String类

一、输出hello world

package day01;

public class helloworld {
	public static void main(String[] args){
		System.out.println("hello world");
}
}

二、常量和变量

1. Java关键字(关键字都小写)
定义:Java关键字是电脑语言里事先定义的,又叫保留字,还有特别意义的变量;Java关键字对编译器有特殊意思,他们用来表示一种数据类型,或者表示程序的结构。
注意:关键字不能用作变量名、方法民、包名、类名、参数。
https://www.w3cschool.cn/java/java-keywords.html

abstractassert
booleanbreak
bytecase
catchchar

2. Java标识符
Java语言中,对于变量、常量、函数、语句块也有名字,我们统称为标识符。
标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的。
Java标识符是由数字、字母、下划线(_)、美元符号 、 人 民 币 符 号 ¥ , 在 J a v a 中 区 分 大 小 写 且 要 求 首 位 不 能 是 数 字 , 关 键 字 不 能 作 为 标 识 符 举 例 合 法 标 识 符 : m y N a m e 、 m y n a m e 、 P o i n t s 、 、人民币符号¥,在Java中区分大小写且要求首位不能是数字,关键字不能作为标识符 举例合法标识符: myName、my_name、Points、 JavamyNamemynamePointspoints、_sys_ta、OK、_17er、17
非法标识符:
#name、class、25name、&time、if
命名约定:
类和接口名:包含大小写,每个字的首字母大写,MyClass、HelloWorld、
方法名:遵循驼峰规则setAppName
常量名:基本数据类型的常量名使用全部大写字母,字与字间用下划线分割,SIZE_NAME.
变量名:做到见名知意即可。

3、Java变量类型(区分大小写)
在Java中,必须先声明所有变量,然后才能使用它们。变量声明基本形式如下:

type = identifier [= value], identifier [= value] .....
  1. type类型可以是int float char double long
  2. identifier是变量的名称
  3. 初始化包括等号和值

要声明指定类型的多个变量,请用逗号分隔;

int a = 3, b, c = 5; //定义三个整型,并对a、c进行初始化
int d,e,f;  //定义三个整形变量

在声明之前不能使用变量,如下会报错,正确应为int count;count = 100:
public class helloworld{
public static void main(String[] args){
count = 100;
int count;
System.out.println(count);
}
}

Java允许变量被动态初始化:

// c is dynamically initialized
    double c = Math.sqrt(2 * 2);

    System.out.println("c is " + c);

4、数据类型
一定是强类型的,int i = 1; 并不能像scala中一样能自动推导出数据类型
a.基本数据类型(int,float)char boolean

问题:基本数据类型在内存中占多少大小?

类型存储需求bit数
int4字节4*8
long8字节8*8
short2字节2*8
byte1字节1*8
float4字节4*8
double8字节8*8
char2字节2*8
boolean1字节1*8

b.引用数据类型
主要是类、接口、数组
在JVM中,基本数据类型存储的是什么?数据本身
引用数据类型存的又是什么?地址

package day01;

public class helloworld{
	public static void main(String[] args){
		String a = "abc";
		String b = "abc";
		if (a==b)	{System.out.println("a == b");}
		else {System.out.println("a != b");}
}
}		//String类型在直接赋值时,如果内容相同,会指向同一个地址。
//a、b两个值判断,首先会去字符串常量池中找有没有字符串常量“abc”,在a已经产生了abc的前提下,b会直接指向字符串常量池的“abc”,所以两个的内存地址是一样的。
--------------------------------------------------------------------------
稍作变化后:
	String a = "abc"
	String b = new String( original: "abc");	//用new的话就会直接新建内存来存放。

–问题–?
枚举是否属于引用数据类型?
如何理解值传递和引用传递?Java是值传递还是引用传递?

  1. 自动类型转换
    目标类型>源类型,double是8个字节,int是4个字节。
    注意:只能是同类型的转换,两种类型需要兼容。
//低精度向高精度转换可以直接转换不会丢失精度
public static void main(String[] args) {
	int i = 5;
	double a = i;
	System.out.println(a);
	}
//高精度转换为低精度需要强制转换,需要注意的是精度丢失
 double i = 5.4;
         int a = (int)i;
        System.out.println(a);
        结果是5

强制类型转换应用场景:开发中调用一个方法,返回值是一个Object(是所有类的父类),Object obj = 对象.方法(…) User user = (User)obj;

  1. 常量
    定义:在程序运行中一直不会改变的量称为常量,通常称为“final变量”,常量在整个过程中只能被赋值一次。在为所有对象共享时,常量是非常有用的。

  2. 注释
    /*
    **文档注释
    ** author john
    **version 1.0
    /

  3. 运算符 功能控制
    a.算数运算符 + - * %

 public class helloworld{

    public static void main(String[] args) {
       int i = 5;
       int b =  i++;
        System.out.println(b);
        Systrm.out.println(i);
    }

        //i++操作显先赋值再自增,把i的值赋值给b,此时b为5,i进行一个自增操作,于是变为了6,
        所以输出    b = 5 , i = 6 
 --------------------------------------------
  public class helloworld{

    public static void main(String[] args) {
       int i = 5;
       int b =  --i;
        System.out.println(b);
        System.out.println(i);
    }
    //--i操作先执行自减,再进行赋值,--i的值为4,再把4赋值给b,所以输出为b = 4,i = 4.

关于++和–的面试题:

int a = 3;
int b = 4;
int c = a++;
int d = --b;
System.out.println("a:" +a);
System.out.println("b:" +b);
System.out.println("c:" +c);
System.out.println("d:" +d);

答案输出什么:4 3 3 3
一开始a = 3,b = 4,进入到a++这一步,先赋值再自增,所以是c = 3,a自增长为4;--b执行的操作是,先自减,b = 4-1为3,再把3赋值给d.

b.赋值运算
如下:=、 +=、 -=、/= 、*=
c.比较运算符
下面四个只支持两边都是数值类型

<

=
<=
下面两个支持引用类型
==
!=

d.逻辑运算符
&& 、& 、||、|
&&:只有当&&左边的为真时,才会执行&&右边的程序;只有左边true右边为true,则结果为true;只要左边为false,则结果为false。
&:不管怎样,都会执行&左右两边的程序;只要左右两边有一个false,则为,false;两边都为true,则为true。
|| :表示或,只要第一个执行条件为真时,后面的条件不再判断
| :要对所有条件进行判断

public class helloworld{

    public static void main(String[] args) {
       System.out.println(func2());
    }
    public static boolean func1(){
        return true;
    }
    public static boolean func2(){
        return false;
    }
    ----------------------------------------------------
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值