前面复习了如何在IDE下写JAVA代码
现在我们来学习一些基本概念?
JAVA中我们常常需要存储一些数据,什么是数据?数据就是对客观事物的逻辑归纳。
普遍认为,
例如A=5,那么A就是一个数据,代表数字5,类型是数字。
例如B=b,那么B也是一个数据,代表字母b,类型是字母。
例如C=啊,那么C也是一个数据,代表汉字啊,类型是汉字。
在JAVA中,常常需要声明变量。
变量的概念来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,相当于在计算机中开辟的一块存储区域,用来存储数据。
后面会了解到栈空间,堆空间,和静态区的概念。
那么在JAVA中这些应该怎么表示?
【访问修饰符】修饰符+变量类型+变量名=变量默认值
1.访问修饰符:
用来修饰可访问权限。
访问修饰符权限 类 包 子类 其他包
public ∨ ∨ ∨ ∨
protect ∨ ∨ ∨ ×
default ∨ ∨ × ×
private ∨ × × ×
default为不写时的默认。
2.修饰符。
修饰符 | ||
名称 | 说明 | 备注 |
static | 静态变量(又称为类变量,其它的称为实例变量) | 可以被类的所有实例共享。 并不需要创建类的实例就可以访问静态变量 |
final | 常量,值只能够分配一次,不能更改 | 注意不要使用const,虽然它和C、C++中的const关键字含义一样,可以同static一起使用,避免对类的每个实例维护一个拷贝 |
transient | 告诉编译器,在类对象序列化时,此变量不需要持久保存 | 主要是因为改变量可以通过其它变量来得到,使用它是为了性能的问题 |
volatile | 指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确的处理 |
|
例如:
int a =1;
3.变量类型
Java中已包含了8中基本数据类型:
主要分为三类:
数值型,又包括整数类型(byte,short,int,long)和浮点类型(float,double)
字符型,char
布尔型,逻辑是与非,boolean
取值范围:
基本类型 大小 示例 取值范围
boolean 1字节8位 true true,false
byte 1字节8位有符号整数 -12 -128 — +127
short 2字节16位有符号整数 100 -32768 — +32767
int 4字节32位有符号整数 12 -2147483648 — +2147483647
long 8字节64位有符号整数 10000 -2^63 —— +2^63-1
char 2字节16位Unicode字符 'a' 0——65535
float 4字节32为浮点数 3.4f 1.4E—45~3.4E+38,-1.4E—45~ -3.4E+38
double 8字节64位浮点数 -2.4e3D 4.9E—324~1.7E+308,-4.9E—324~-1.7E+308
面试题:
JAVA中,
java中没有全局变量,只有方法变量、实例变量(类中的非静态变量)、类变量(类中的静态变量)。
4.变量名
相当于给变量起个好记的名字。
变量的5个命名规则:
1.$ 、字母、下划线,数字组成。
2.首字母可以以$ 、字母、下划线,不能以数字开头
3.不能是关键字,布尔值或者null.
4.区分大小写,没有长度限制,坚持见名知意原则。
5.以驼峰命名规则来,就是首字母小写,后面也都小写,遇到第二个词出现时,首字母大写。
例如:teacherAge 老师的年龄
口诀就是:字下美人数骆驼
JAVA关键字:
数据类型转换:数据类型之间是可以相互转换的。存储位数越高越多,类型的级别也越高。转换方式有两种,自动转换和强制转换。1.自动转换。将低级转给高级,进行自动转换。例如:byte b = 7;int i =b;这就完成了自动转换。2.强制转换。将高级转给低级,进行强制转换。例如:int n = 786;byte b = n ;//这就是错误的short s = n;//这也是错误的short s =(short)n;//强制类型转换。大转小有时候会出现问题——丢失数据,例如小数点后面的数。 小转大则无碍。
JAVA中的注解:注解是开发人员和程序阅读之间交流的重要手段,是对代码的解释和说明。好的注解可以提高代码的可读性,减少维护成本。
分为 单行注解、多行注解和文档注解。单行://内容Eclipse快捷键:Ctrl+/多行:/** 内容*/Eclipse快捷键:Ctrl+Shift+/文档:/***内容*/还有一些标签注解 以@开头的。@author 作者@version 版本等等
引用数据类型 String :
字符串类型。字面常量。
面试题:关于String 的空间开辟。
String str = "abc";//常量池 有就引用 没有就开辟空间
String a = "abc";//没有开辟空间 和上面的指向同一对象
String b = str+a;//开空间重新放
String str1= new String("abc");//堆 开辟空间
String aa = "";//一个空间
String d = null;//无空间
String x="a"+"b"+"c";//a b c ab abc 五个空间
//System.out.println();=toString();
Java中String类的常用方法有哪些?
public char charAt(int index)
返回字符串中第index个字符;
public int length()
返回字符串的长度;
public int indexOf(String str)
返回字符串中第一次出现str的位置;
public int indexOf(String str,int fromIndex)
返回字符串从fromIndex开始第一次出现str的位置;
public boolean equalsIgnoreCase(String another)
比较字符串与another是否一样(忽略大小写);
public String replace(char oldchar,char newChar)
在字符串中用newChar字符替换oldChar字符
public boolean startsWith(String prefix)
判断字符串是否以prefix字符串开头;
public boolean endsWith(String suffix)
判断一个字符串是否以suffix字符串结尾;
public String toUpperCase()
返回一个字符串为该字符串的大写形式;
public String toLowerCase()
返回一个字符串为该字符串的小写形式
public String substring(int beginIndex)
返回该字符串从beginIndex开始到结尾的子字符串;
public String substring(int beginIndex,int endIndex)
返回该字符串从beginIndex开始到endsIndex结尾的子字符串
public String trim()
返回该字符串去掉开头和结尾空格后的字符串
public String[] split(String regex)
面试题:
堆栈的底层概念简介:
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)
堆区:
1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
栈区:
1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
此处我们先大概了解一下。