第一周 Java学习笔记

jdk jre jvm 区别联系
用 javac 编译java ,java 运行java.
全局变量有自动赋值的,局部变量不自动赋值
private 私有的
* protected 保护的
* public 共有的
*
* static 静态的 在jvm,jre,jdk 在jvm虚拟机启动时就将static加载到内存当中。
* //整形数随意赋值,但是浮点数就需要加入f
// float f = 123.0F;
// double d = 123.123;
scanner
//类型转换 小到大无所谓,大的能装下,但是大到小,提示是否可以装得下
// //当知道类型没问题,可以进行强制转换。

  1. JAVA的基本数据类型有哪些 ? 各种基本数据类型占用的内存大小 String 是不是基本数据类型 ?

int short long boolean float double byte char

  1. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
    可以 带public的必须要和源文件名称相同,其他不能带public
    一个.java源文件可以有多个类,但最多只能有一个public类。

java程序是从一个public类的main函数开始执行的,(其实是main线程)。 只能有一个public类是为了给类装载器提供方便。 一个public 类只能定义在以它的类名为文件名的文件中。

每个编译单元(文件)都只有一个public 类。因为每个编译单元都只能有一个公共接口,用public类来表现。该接口可以按照要求包含众多的支持包访问权限的类。如果有一个以上的public 类,编译器就会报错。 并且public类的名称必须与文件名相同(严格区分大小写)。 当然一个编译单元内也可以没有public类
3. Java有没有goto?

goto 是 Java 中的保留字,在目前版本的 Java 中没有使用。根据 James Gosling(Java 之父)编写的《The Java
Programming Language》一书的附录中给出了一个 Java 关键字列表,其中有 goto 和 const,但是这两个是目前
无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉 C 语言的程
序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字。

  1. 说说&和&&的区别.

  2. switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

  3. short s1 = 1;
    s1 = s1 + 1; 的运行结果是什么

    2
    short s1 = 1;
    s1 += 1; 的运行结果是什么
    2

  4. char型变量中能不能存贮一个中文汉字?为什么?
    在C语言中,char类型占1一个字节,而汉子占2个字节,所以不能存储。

    在Java中,char类型占2个字节,而且Java默认采用Unicode编码,以个Unicode码是16位,所以一个Unicode码占两个字节,Java中无论汉子还是英文字母都是用Unicode编码来表示的。所以,在Java中,char类型变量可以存储一个中文汉字。
    9.进制转换

  1. 把 34 转成 8进制
  2. 把 0x10100101 转成 10进制,16进制
  3. 写出 short a=-7 在内存中的表现形式

1)
2)

3)1111111````001
10 下面哪些标识符是合法的

name, Name ,##,,9username,$ , u s e r n a m e , ,user_name , ,username,name, dog-cat ,#name, _name,public,aa@sina, @qq, publicName,name999, L9, 中国,user name

合法: name, Name,user_name dog-cat _name publicName name999 L9 user name
如果最快速的计算 2 * 8

1:标识符只能由数字、字母(包括中文)、下划线_、美元符号$组成,不能含有其他符号。

2:标识符不能以数字开头。标识符中不能有空格。

3:关键字不能做标识符。
11. switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
*

  • switch可作用于char byte short int
  • switch可作用于char byte short int对应的包装类
  • switch不可作用于long double float boolean,包括他们的包装类
  • switch中可以是字符串类型,String(jdk1.7之后才可以作用在string上)
  • switch中可以是枚举类型
    12 如何不利用第三个变量,把两个变量的值交换

??? a = a + b;
b = a - b;
a = a - b;
) 位运算
通过异或运算也能实现变量的交换,这也许是最为神奇的,请看以下代码:
int a=10,b=12; //a=1010^b=1100;
a=a^b; //a=0110^b=1100;
b=a^b; //a=0110^b=1010;
a=a^b; //a=1100=12;b=1010;
13 写出一个三元表达式的示例

14 下面的语句,编译出错的有哪些
char a=‘A’
char a=‘a’
char a=‘中’ 错
char a=‘中国’ 错
char a=‘ab’ 错
char a=“中” 错
char a=90;
char a=65550
char a=’ ’
char a=‘’
char a=‘\’

15 下题的运行结果
byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;

	b6=b4+b5;   

	b3=(b1+b2);   

	System.out.println(b3+b6);

13	

16 System.out.println(‘a’ + 1+3+ ‘’); 的执行结果是( E)
A.101 B.a13 C.a4 D.973 E 编译出错

17 用三元表达式, 把三个变量中最大的挑出来
d = (a>b?(a>c?a:c):(b>c?b:c))

18 如何查看当前登录操作系统的用户是哪个,如果用命令,应该用哪个
2、某队人需要一箱紧急任务,要求在A,B,C,D,E,F 6人种尽可能多地条若干人,但是有限制
条件:
A和B两人中至少取一人
A和D不能一起去;
A,E,F中要派两人去;
B,C都去或都不去;
C,D两人去一个
若D不去,则E也不去。
、你有一对幼兔一个月长大,长大后一个月就能生两只幼兔。
问10个月后你能拿到多少只幼兔(两只都是一公一母别领会错了)’
11、有一条彩色宝石项链,是由很多种不同的宝石组成的,包括红宝石,蓝宝石,钻石,翡翠,珍珠等。
有一天国王把项链赏赐给了一个学者,并跟他说,你可以带走这条项链,但是王后很喜欢红宝石,蓝宝石,紫水晶,翡翠和钻石这五种,
我要你从项链中截取连续的一小段还给我,这一段中必须包含所有的这五种宝石,剩下的部分你可以带走。如果无法找到则一个也无法带走。
请帮助学者找出如何切分项链才能够拿到最多的宝石。
冒泡排序

API
string
math

一,对象
对象在内存中的存储
在这里插入图片描述
过程:
首先main函数进栈
然后创建studeny对象 在栈中 创建 s1 ,s1中存的是001(指向堆内存的地址),在堆中将开辟空间存naame ,age等,接着 s1.name,根据s1的值001在堆内存找到name,改变值。后面都差不多不写了。
1.2成员变量与局变量
区别:
1.类中位置不同:成员变量(类中方法外) 局部变量(方法内部和方法声明)
2.内存位置不同:成员变量 (堆内存) 局部变量(栈内存)
3.生命周期不同:成员变量(随对象存在) 局部变量(随着方法的调用而
存在,醉着方法的调用完毕而消失)
4.初始化值不同:成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)
二.继承
关键字extends
2.1继承中变量的访问特点(掌握) 在子类方法中访问一个变量,采用的是就近原则。 1. 子类局部范围找 2. 子类成员范围找 3. 父类成员范围找 4. 如果都没有就报错(不考虑父亲的父亲…)
2.3继承中构造方法的访问特点(理解) 注意:子类中所有的构造方法默认都会访问父类中无参的构造方法 子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化, 原因在于,每一个子类构造方法的第一条语句默认都是:super() 问题:如果父类中没有无参构造方法,只有带参构造方法,该怎么办呢?

  1. 通过使用super关键字去显示的调用父类的带参构造方法 2. 在父类中自己提供一个无参构造方法

5.构造函数
构造函数:1、与类名一致。2、无返回类型 不是void 3、在创建对象时只执行一次。
* 每次创建对象的时候调用一次。
* 构造函数的调用一次是指 每个对象调用一次。
* 不同参数的构造方法,在创建对象的时候只调用其中的一种。
* 请你简单说一下构造函数是什么?
* 构造函数是创建对象时调用的方法/函数
* 构造函数与普通函数有几个区别
* 1、构造函数名必须与类名一致
* 2、构造函数无返回值
* 3、构造函数在创建对象时只执行一次。
*
* 系统在你没有写构造方法时会提供一个无参的构造方法,但是当你写构造方法那么系统将不会再提供给你无参的构造方法。

三。封装
被private修饰的成员,只能在本类进行访问,针对private修饰的成员变量,如果需要被其他类使用,提供相
应的操作
提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰
提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
封装好处 通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性

四.多态
方法的重载和重写
4.1重写
1、方法重写概念 子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样,记得返回值一样) 2、方法重写的应用场景 1. 通过使用super关键字去显示的调用父类的带参构造方法 2. 在父类中自己提供一个无参构造方法
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了 父类的功能,又定义了子类特有的内容
3、Override注解 用来检测当前的方法,是否是重写的方法,起到【校验】的作用
注意事项:

  1. 私有方法不能被重写(父类私有成员子类是不能继承2. 子类方法访问权限不能更低(public > 默认 > 私有)

public class Fu {
	private void show() { System.out.println("Fu中show()方法被调用"); }

	void method()
	{ System.out.println("Fu中method()方法被调用"); }}

public class Zi extends Fu {
	/* 编译【出错】,子类不能重写父类私有的方法 */
	@Override private void show() 
	{ System.out.println("Zi中show()方法被调用"); }
	/* 编译【出错】,子类重写父类方法的时候,访问权限需要大于等于父类 */

	@Override private void method() 
	{ System.out.println("Zi中method()方法被调用"); }
	/* 编译【通过】,子类重写父类方法的时候,访问权限需要大于等于父类 */	@Override 
	public void method()
	{ System.out.println("Zi中method()方法被调用"); }}

. 修饰符
4.1 package(了解)
1、包的概念 包就是文件夹,用来管理类文件的
2、包的定义格式 package 包名; (多级包用.分开) 例如:package com.heima.demo;
3、带包编译&带包运行 带包编译:javac –d . 类名.java
例如:javac -d . com.heima.demo.HelloWorld.java
带包运行:java 包名+类名 例如:java com.heima.demo.HelloWorld
4.2 import(理解) 导包的意义 使用不同包下的类时,使用的时候要写类的全路径,写起来太麻烦了 为了简化带包的操作,Java就提供了导包的功能 导包的格式 格式:import 包名; 范例:import java.util.Scanner;
在这里插入图片描述
4.4 final(应用)
fianl关键字的作用 final代表最终的意思,可以修饰成员方法,成员变量,类
final修饰类、方法、变量的效果
fianl修饰类:该类不能被继承(不能有子类,但是可以有父类)
final修饰方法:该方法不能被重写
final修饰变量:表明该变量是一个常量,不能再次赋值
final 修饰指的是基本类型的数据值不能发生改变
final 修饰指的是引用类型的地址值不能发生改变,但是地址里面的内容是可以发生改变的
五,static

  • 静态的StaticTest 并没有创建对象,那么他的i存放在哪里。
    • jvm虚拟机加载类文件时就会将类文件中static这个关键字表明的变量及方法及静态块都存入静态区域内。
    • 静态标明的属性就一个然后第一次直接进入到内存中,不以类对象创建不创建。
    • 1、静态元素在类加载的时候就进行了初始化
    • 2、静态元素存储于静态元素区域中
    • 3、静态元素区域不被GC管理 垃圾回收不管理这块
    • 4、静态元素只加载一次
    • 5、静态元素与对象没关系,他属于类
    • 6、由于静态的加载时间可能还没创建对象,我们可以通过类名直接使用静态元素
    • 7、静态元素可以被非静态方法使用。但是静态方法只能调用静态元素。在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值